由于用户信息是缓存在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:2127.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中文网,转载请注明出处,感谢您的尊重!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐