Pencocokan pemindaian redis hanya mendukung pencocokan gaya glob. Itu tidak dapat melakukan pencocokan regex. Untuk mencapai tujuan Anda, Anda memiliki dua opsi:
- Pindai semua kunci dan lakukan pencocokan di sisi klien.
- 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.