Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Cara Mengganti Nama Bidang di Hash untuk Beberapa Kunci di Redis

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.

  1. Pertama, kita menggunakan redis-cli --scan --pattern <pattern> untuk mendapatkan daftar kunci, satu kunci per baris.
  2. 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.
  3. Kami kemudian menjalankan skrip awk untuk setiap kunci. Skrip awk ini sedikit rumit, jadi kami akan memecahnya
  4. Skrip awk memiliki templat perintah evalsha <sha1> 1 __key__ <old field name> <new field name>.. . Ini adalah perintah yang akan dijalankan untuk semua kunci.
  5. Untuk setiap kunci yang cocok, perintah awk menggantikan __key__ dengan kunci yang sebenarnya
  6. Selanjutnya, kita mengubah perintah string ke format protokol redis. Ini adalah format mentah yang dimengerti redis.
  7. 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

  1. Anda dapat mengubah --pattern dan perintah grep untuk memilih kunci yang bertipe hash
  2. Anda dapat menyesuaikan cmd_template untuk memasukkan bidang yang ingin Anda ganti namanya
  3. 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!

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. RuntimeError:-ERR Perintah Tidak Dikenal menjalankan permata redis di Ruby

  2. Apakah ada batasan jumlah argumen yang dapat ditangani oleh perintah redis seperti ZADD atau HMGET?

  3. Optimalisasi kinerja Nodejs

  4. Bagaimana saya bisa menjalankan redis pada satu server di port yang berbeda?

  5. redis cluster terus mencetak log WSA_IO_PENDING