首頁  >  文章  >  後端開發  >  redis批量獲取hash key的數據

redis批量獲取hash key的數據

ringa_lee
ringa_lee原創
2018-05-14 16:55:006660瀏覽

由於用戶資訊是緩存在redis hash類型中的

需求是獲取一個用戶列表,比如每一頁30個用戶,想一次性獲取這30個用戶的用戶信息
可是redis並沒有批量獲取hash key的方法!
請問我該如何解決?是不是我的設計有問題?
如用戶hash key 為userinfo:1  user:info:2  user:info:3 user:info:4  ....
這些hash key 儲存使用者資訊
想一次取得userinfo:1-30的hash值

回覆內容:

由於用戶資訊是緩存在redis hash類型中的
需求是獲取一個用戶列表,例如每一頁30個用戶,想一次性獲取這30個用戶的用戶信息
可是redis並沒有批量獲取hash key的方法!
請問我該如何解決?是不是我的設計有問題?
如用戶hash key 為userinfo:1  user:info:2  user:info:3 user:info:4  ....
這些hash key 儲存使用者資訊
想一次取得userinfo:1-30的hash值

用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