Redis scan match podporuje pouze shodu ve stylu glob. Neumí provádět párování regulárních výrazů. Abyste dosáhli svého cíle, máte dvě možnosti:
- Naskenujte všechny klíče a proveďte porovnávání na straně klienta.
- Proveďte kontrolu a spárování pomocí skriptu Lua. Jako příklad můžete vyzkoušet následující jednolinku:
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:[^:]*'
Tento jednořádkový řádek vrací výsledky přesně jako vestavěný příkaz skenování. Nejsem odborník na Lua a kód není plně otestován.
Také shoda Lua NENÍ shoda s regulárním výrazem, ačkoli může vyřešit většinu problémů. Musíte si vzít Luin odkaz a zkontrolovat, zda odpovídá vašemu případu.