Redis-如何批量获取Redis中的大量hash key?

发布于 2016-12-24 12:57:53 字数 78 浏览 3900 评论 3

我有500万个用户信息使用哈希值对的方式存储在redis中,现在想对这些用户列表做分页显示,请问redis可以实现对这些key进行分批获取吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

灵芸 2017-10-16 20:44:26

肯定的给你回答:对于你现在的直接k-v存储方式,不能分批获取。如果要分批获取的话肯定要维护一个除了k-v之外的一个类似“索引”的东西。所以string,hash的数据类型都不能分批获取,而list,set,sorted set类型则可以分批获取。

灵芸 2017-06-26 07:26:17

你可以参考一下这个:
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"

偏爱自由 2017-01-28 03:31:28

可以这样维护大量的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);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文