Redis-如何批量获取Redis中的大量hash key?
我有500万个用户信息使用哈希值对的方式存储在redis中,现在想对这些用户列表做分页显示,请问redis可以实现对这些key进行分批获取吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我有500万个用户信息使用哈希值对的方式存储在redis中,现在想对这些用户列表做分页显示,请问redis可以实现对这些key进行分批获取吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
肯定的给你回答:对于你现在的直接k-v存储方式,不能分批获取。如果要分批获取的话肯定要维护一个除了k-v之外的一个类似“索引”的东西。所以string,hash的数据类型都不能分批获取,而list,set,sorted set类型则可以分批获取。
你可以参考一下这个:
HMSET操作
[falcon@www.fwphp.cn ~/redis-2.0.0]$ ./redis-cli hmset h_uid uid004 'linuxtone.org' uid005 'qq.com'
OK
[falcon@www.fwphp.cn ~/redis-2.0.0]$ ./redis-cli hkeys h_uid
1. "uid001"
2. "uid002"
3. "uid003"
4. "uid004"
5. "uid005"
[falcon@www.fwphp.cn ~/redis-2.0.0]$ ./redis-cli hvals h_uid
1. "Falcon.C"
2. "NetSeek"
3. "LinuxTone"
4. "linuxtone.org"
5. "qq.com"
可以这样维护大量的k-v:
在list中存储所需的k值,将k-v写入hash中
通过维护list中的k值从而达到维护hash中的k-v值
代码如下:
存储
list中的k值
$redis->lPush(self::$lKey,$m);
hash中的k-v值:
$redis->hSet(self::$hKey,$m,serialize($ret));
获取:
list中的k值
$key = $redis->lRange(self::$lKey, 0, -1);
hash中的k-v值:
$ret = $redis->hMget(self::$hKey,$key);