Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Correspondência do Redis SCAN


A correspondência de verificação do Redis suporta apenas a correspondência de estilo glob. Ele não pode fazer correspondência de regex. Para atingir seu objetivo, você tem duas opções:
  1. Verifique todas as chaves e faça a correspondência no lado do cliente.
  2. Use o script Lua para fazer a varredura e a correspondência. Você pode tentar o seguinte one-liner como exemplo:
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:[^:]*'

Este one-liner retorna resultados exatamente como o comando de varredura integrado. Não sou especialista em Lua e o código não foi totalmente testado.

Além disso, a correspondência de Lua NÃO é uma correspondência de regex, embora possa resolver a maioria dos problemas. Você precisa pegar a referência de Lua para verificar se ela corresponde ao seu caso.