ホームページ  >  記事  >  バックエンド開発  >  Redisはハッシュキーデータをバッチで取得します

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

ringa_lee
ringa_leeオリジナル
2018-05-14 16:55:006616ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。