Redis
 sql >> Base de données >  >> NoSQL >> Redis

Correspondance SCAN Redis

La correspondance d'analyse Redis ne prend en charge que la correspondance de style glob. Il ne peut pas faire de correspondance de regex. Afin d'atteindre votre objectif, vous avez deux options :

  1. Scannez toutes les clés et effectuez la correspondance côté client.
  2. Utilisez le script Lua pour effectuer l'analyse et la correspondance. Vous pouvez essayer l'exemple suivant :
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:[^:]*'

Cette ligne renvoie des résultats exactement comme la commande de numérisation intégrée. Je ne suis pas un expert Lua et le code n'est pas entièrement testé.

De plus, la correspondance de Lua n'est PAS une correspondance de regex, bien qu'elle puisse résoudre la plupart des problèmes. Vous devez prendre la référence de Lua pour vérifier si elle correspond à votre cas.