sql >> Base de Datos >  >> NoSQL >> Redis

Coincidencia de ESCANEO de Redis

La coincidencia de escaneo de Redis solo admite la coincidencia de estilo global. No puede hacer coincidencias de expresiones regulares. Para conseguir tu objetivo, tienes dos opciones:

  1. Escanea todas las claves y haz coincidencias en el lado del cliente.
  2. Utilice la secuencia de comandos Lua para escanear y hacer coincidir. Puede probar la siguiente línea como ejemplo:
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 devuelve resultados exactamente como el comando de escaneo incorporado. No soy un experto en Lua y el código no está completamente probado.

Además, la coincidencia de Lua NO es coincidencia de expresiones regulares, aunque puede resolver la mayoría de los problemas. Debe tomar la referencia de Lua para verificar si coincide con su caso.