Redisはハッシュキーデータをバッチで取得します

ringa_lee
リリース: 2023-03-01 07:48:02
オリジナル
6659 人が閲覧しました

ユーザー情報は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 はトランザクションです

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート