sql >> Databáze >  >> NoSQL >> Redis

Redis SCAN odpovídající

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:

  1. Naskenujte všechny klíče a proveďte porovnávání na straně klienta.
  2. 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.




  1. Nejúčinnější způsob, jak získat několik hashů v Redis?

  2. Implementace vyhodnocení objektu výrazu dotazu typu goMongoDB

  3. jak zavolat operaci počítání po nálezu pomocí java ovladače mongodb

  4. Můžeme se připojit k Redis?