Съвпадението за сканиране на Redis поддържа само съвпадение на глобален стил. Не може да направи съвпадение на регулярни изрази. За да постигнете целта си, имате две възможности:
- Сканирайте всички ключове и направете съвпадение от страна на клиента.
- Използвайте Lua скрипт, за да извършите сканирането и съпоставянето. Можете да опитате следния едноредов като пример:
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:[^:]*'
Този едноред връща резултати точно като вградената команда за сканиране. Не съм експерт по Lua и кодът не е напълно тестван.
Също така, съвпадението на Lua НЕ е съвпадение на регулярни изрази, въпреки че може да реши повечето проблеми. Трябва да вземете препратката на Lua, за да проверите дали отговаря на вашия случай.