사용자 정보는 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 루프, 멀티 비즈니스죠