Katakanlah Anda ingin Anda memulai penamaan bidang dengan under_scores, dan anggota tim lain menggunakan camelCase. Sekarang hash redis Anda berantakan, dan Anda lebih suka berpegang pada satu konvensi. Anda memerlukan cara untuk mengganti nama bidang di semua hash.
Redis tidak memiliki cara untuk mengganti nama bidang dalam hash. Tetapi yang lebih penting, tidak ada cara untuk melakukannya untuk semua hash yang telah Anda buat.
Untungnya, hanya sedikit keajaiban baris perintah yang diperlukan untuk memperbaiki kekacauan ini.
Perintah ini akan menemukan kunci yang cocok dengan pola pengguna:*, lalu mengganti nama bidang
- tanggal_pembuatan hingga tanggal pembuatan
- posttypeid ke postTypeId
- jumlah tampilan ke jumlah tampilan
- … dan seterusnya
Perintah "hrename" yang Hilang
Redis tidak memiliki perintah hrename, jadi pertama-tama kita menulisnya dalam skrip lua. Perintah ini akan mengganti nama bidang dalam satu hash.
evalsha <script-sha1-identifier> 1 <key> <old-field-1> <new-field-1>...
Anda harus memuat skrip terlebih dahulu. Perintah cat hrename.lua | redis-cli -x script load
memuat skrip dan mengembalikan pengenal SHA1. Anda dapat menggunakan pengenal ini kapan pun Anda ingin menjalankan skrip.
Mengganti Nama Bidang dalam Beberapa Hash
Sekarang kita memiliki perintah untuk memperbaiki satu hash, kita perlu menjalankannya dalam satu lingkaran untuk semua hash yang cocok dengan suatu pola. Skrip hash_bulk_rename_fields.sh
melakukan hal itu.
- Pertama, kita menggunakan
redis-cli --scan --pattern <pattern>
untuk mendapatkan daftar kunci, satu kunci per baris. - Selanjutnya, kita melewati kunci melalui
grep
. Perintah redis scan tidak menerima ekspresi reguler, jadi kami melakukan pemfilteran dasar dengan pemindaian, dan kemudian memberikan ekspresi reguler yang lebih baik melalui grep. - Kami kemudian menjalankan skrip awk untuk setiap kunci. Skrip awk ini sedikit rumit, jadi kami akan memecahnya
- Skrip awk memiliki templat perintah
evalsha <sha1> 1 __key__ <old field name> <new field name>..
. Ini adalah perintah yang akan dijalankan untuk semua kunci. - Untuk setiap kunci yang cocok, perintah awk menggantikan
__key__
dengan kunci yang sebenarnya - Selanjutnya, kita mengubah perintah string ke format protokol redis. Ini adalah format mentah yang dimengerti redis.
- Akhirnya, kita menyalurkan perintah mentah ke redis-cli menggunakan flag –pipe. Ini adalah cara paling efisien untuk mengirim perintah massal ke redis.
Menyesuaikan Skrip ini
- Anda dapat mengubah
--pattern
dan perintah grep untuk memilih kunci yang bertipe hash - Anda dapat menyesuaikan
cmd_template
untuk memasukkan bidang yang ingin Anda ganti namanya - Jika server redis Anda tidak ada di localhost, Anda harus memberikan host, port, dan sandi dua kali dalam perintah, pada dasarnya setiap kali Anda memanggil redis-cli.
Lihat Juga
- Ganti Nama Beberapa Tombol Menggunakan Pemindaian
- Hapus Tombol yang Cocok dengan Pola
- Setel Kedaluwarsa ke Beberapa Kunci
- RDBTools GUI for Redis memungkinkan Anda melihat pratinjau tindakan massal Anda dan menyediakan GUI yang kuat untuk mengelola data di Redis. Ini dapat diunduh gratis!