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

Pencocokan Redis SCAN

Pencocokan pemindaian redis hanya mendukung pencocokan gaya glob. Itu tidak dapat melakukan pencocokan regex. Untuk mencapai tujuan Anda, Anda memiliki dua opsi:

  1. Pindai semua kunci dan lakukan pencocokan di sisi klien.
  2. Gunakan skrip Lua untuk melakukan pemindaian dan pencocokan. Anda dapat mencoba one-liner berikut sebagai contoh:
redis-cli eval 'local res = redis.call("scan", ARGV[1]); local matches = {}; for i,v in ipairs(res[2]) do if v == string.match(v, ARGV[2]) then matches[#matches+1] = v end end res[2] = matches; return res' 0 cursor-starting-from-0 'Person:[^:]*'

One-liner ini mengembalikan hasil persis seperti perintah pemindaian bawaan. Saya bukan ahli Lua, dan kodenya belum sepenuhnya diuji.

Juga, pencocokan Lua BUKAN pencocokan regex, meskipun dapat memecahkan sebagian besar masalah. Anda perlu mengambil referensi Lua untuk memeriksa apakah itu cocok dengan kasus Anda.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Memcache vs. Redis?

  2. Masalah dalam deserialize redis-cache ke objek di Spring-boot

  3. Replikasi redis dan redis sharding (cluster) perbedaan

  4. Apa yang harus saya gunakan? Kamar Socket.io atau Redis pub-sub?

  5. Menggunakan redis sebagai cache untuk database mysql