ホームページ >バックエンド開発 >PHPチュートリアル >Redisはハッシュキーデータをバッチで取得します
ユーザー情報はredisハッシュタイプでキャッシュされるため
要件は、各ページで30ユーザーなどのユーザーリストを取得し、これらの30ユーザーのユーザー情報を一度に取得したいことです
しかし、redisはそうではありませんハッシュキーをバッチで取得する方法!
どうやって解決すればいいですか?私のデザインに何か問題がありますか?
たとえば、ユーザーのハッシュキーは userinfo:1 user:info:2 user:info:3 user:info:4 ....
これらのハッシュキーにはユーザー情報が保存されます
userinfo:1 のハッシュ値を取得したい一度に-30件
ユーザー情報はredisハッシュ型でキャッシュされるため
要件は、1ページあたり30ユーザーなどのユーザーリストを取得し、この30ユーザーのユーザー情報を取得したいことです
しかし、redis はバッチではありません ハッシュキーを取得する方法!
どうやって解決すればいいですか?私のデザインに何か問題がありますか?
たとえば、ユーザーのハッシュキーは userinfo:1 user:info:2 user:info:3 user:info:4 ....
これらのハッシュキーにはユーザー情報が保存されます
userinfo:1 のハッシュ値を取得したい一度に -30
ループするには lua スクリプトを使用します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 または multi を使用します
私の場合は for ループで、multi はトランザクションです