>  기사  >  백엔드 개발  >  Redis는 해시 키 데이터를 일괄적으로 가져옵니다.

Redis는 해시 키 데이터를 일괄적으로 가져옵니다.

ringa_lee
ringa_lee원래의
2018-05-14 16:55:006653검색

사용자 정보는 redis 해시 형태로 캐시되기 때문에

요건은 각 페이지당 30명의 사용자 등 사용자 목록을 구하는 것이고, 이 30명의 사용자 정보를 얻고 싶습니다. 한 번에
하지만 Redis에는 해시 키를 일괄적으로 얻을 수 있는 방법이 없습니다!
어떻게 해결하나요? 내 디자인에 뭔가 문제가 있는 걸까요?
예를 들어 사용자 해시 키는 userinfo:1 user:info:2 user:info:3 user:info:4....
이 해시 키는 사용자 정보를 저장합니다
사용자 정보를 얻고 싶습니다. :1 한번에 -30의 해시 값

응답 내용:

사용자 정보가 redis 해시 유형에 캐시되므로
요구 사항은 30과 같은 사용자 목록을 얻는 것입니다. 페이지당 사용자 수, 이 30명의 사용자 정보를 한 번에 가져오고 싶습니다
그런데 Redis에는 해시 키를 일괄적으로 가져오는 방법이 없습니다!
어떻게 해결하나요? 내 디자인에 뭔가 문제가 있는 걸까요?
예를 들어 사용자 해시 키는 userinfo:1 user:info:2 user:info:3 user:info:4 ....
이 해시 키는 사용자 정보를 저장합니다
사용자 정보를 얻고 싶습니다. :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 루프, 멀티 비즈니스죠

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.