Redis
 sql >> база данни >  >> NoSQL >> Redis

Съвпадение на Redis SCAN

Съвпадението за сканиране на Redis поддържа само съвпадение на глобален стил. Не може да направи съвпадение на регулярни изрази. За да постигнете целта си, имате две възможности:

  1. Сканирайте всички ключове и направете съвпадение от страна на клиента.
  2. Използвайте 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, за да проверите дали отговаря на вашия случай.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Rails, Sidekiq - Redis NOAUTH

  2. redis - Използване на хешове

  3. Изсушаване на общ RedisTemplate през пролетта 4

  4. Има ли вграждаща Java алтернатива на Redis?

  5. Laravel и redis сканиране