Heim >Backend-Entwicklung >PHP-Tutorial >Redis ruft Hash-Schlüsseldaten stapelweise ab
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
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 verwendeneval "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