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

Cara lebih cepat untuk mengulangi semua kunci dan nilai dalam redis db

Pertama, cara tercepat adalah melakukan semua ini di dalam EVAL.

Selanjutnya, pendekatan yang disarankan untuk mengulangi semua kunci adalah SCAN. Itu tidak akan mengulangi lebih cepat dari KEYS , tetapi akan memungkinkan Redis untuk memproses beberapa tindakan lain di antaranya, sehingga akan membantu perilaku aplikasi secara keseluruhan.

Skripnya akan seperti local data={} local i=1 local mykeys=redis.call(\"KEYS\",\"*\") for k=1,#mykeys do local tmpkey=mykeys[k] data[i]={tmpkey,redis.call(\"GET\",tmpkey)} i=i+1 end return data , tetapi akan gagal jika Anda memiliki kunci yang tidak dapat diakses dengan GET (seperti set, daftar). Anda perlu menambahkan penanganan kesalahan ke dalamnya. Jika Anda perlu menyortir, Anda dapat melakukannya di LUA secara langsung, atau nanti di sisi klien. Yang kedua akan lebih lambat, tetapi tidak akan membiarkan pengguna lain dari instance redis menunggu.

Contoh keluaran:

127.0.0.1:6370> eval "local data={} local i=1 local mykeys=redis.call(\"KEYS\",\"*\") for k=1,#mykeys do local tmpkey=mykeys[k] data[i]={tmpkey,redis.call(\"GET\",tmpkey)} i=i+1 end return data" 0
1) 1) "a"
   2) "aval"
2) 1) "b"
   2) "bval"
3) 1) "c"
   2) "cval"
4) 1) "d"
   2) "dval"
5) 1) "e"
   2) "eval"
6) 1) "f"
   2) "fval"
7) 1) "g"
   2) "gval"
8) 1) "h"
   2) "hval"


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Percikan pencarian dinamis Streaming Terstruktur dengan Redis

  2. Antrian redis Laravel 5.5 terlalu lambat

  3. Tidak dapat terhubung ke Redis dari Docker

  4. Redis adalah utas tunggal. Lalu mengapa saya harus menggunakan selada?

  5. Batch set data dari Kamus ke Redis