Heim  >  Artikel  >  Backend-Entwicklung  >  Redis ruft Hash-Schlüsseldaten stapelweise ab

Redis ruft Hash-Schlüsseldaten stapelweise ab

ringa_lee
ringa_leeOriginal
2018-05-14 16:55:006653Durchsuche

Da Benutzerinformationen im Redis-Hash-Typ zwischengespeichert werden

Die Anforderung besteht darin, eine Benutzerliste zu erhalten, z. B. 30 Benutzer auf jeder Seite, und ich möchte die Benutzerinformationen dieser 30 erhalten Benutzer auf einmal
Aber Redis hat keine Möglichkeit, Hash-Schlüssel in Stapeln zu erhalten!
Wie kann ich es lösen? Stimmt etwas mit meinem Design nicht?
Der Benutzer-Hash-Schlüssel lautet beispielsweise userinfo:1 user:info:2 user:info:3 user:info:4 ....
Diese Hash-Schlüssel speichern Benutzerinformationen
Ich möchte Benutzerinformationen erhalten :1 auf einmal Hash-Wert von -30

Antwortinhalt:

Da Benutzerinformationen im Redis-Hash-Typ zwischengespeichert werden
Die Anforderung besteht darin, eine Benutzerliste zu erhalten, z. B. 30 Benutzer pro Seite, ich möchte die Benutzerinformationen dieser 30 Benutzer gleichzeitig abrufen
Aber Redis verfügt nicht über eine Methode zum stapelweisen Abrufen von Hash-Schlüsseln!
Wie kann ich es lösen? Stimmt etwas mit meinem Design nicht?
Der Benutzer-Hash-Schlüssel lautet beispielsweise userinfo:1 user:info:2 user:info:3 user:info:4 ....
Diese Hash-Schlüssel speichern Benutzerinformationen
Ich möchte Benutzerinformationen erhalten :1 auf einmal -30 Hashwert

Lua-Skriptschleife verwenden
eval "local rst={}; for i,v in pairs(KEYS) do rst[i]=redis.call('hgetall', v) end; return rst" 2 user:1 user:2

127.0.0.1:6379> hgetall user:2
1) "age"
2) "22"
3) "name"
4) "tom"
127.0.0.1:6379> hgetall user:1
1) "name"
2) "jack"
3) "age"
4) "21"
127.0.0.1:6379> eval "local rst={}; for i,v in pairs(KEYS) do rst[i]=redis.call('hgetall', v) end; return rst" 2 user:1 user:2
1) 1) "name"
   2) "jack"
   3) "age"
   4) "21"
2) 1) "age"
   2) "22"
   3) "name"
   4) "tom"

Lua oder Multi verwenden

In meinem Fall einfach eine for-Schleife, multi Es geht ums Geschäft, oder

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn