hget如何获取多个value_Redis:获取所有哈希值的最佳方法

换个不平头的零钱怎么样。转换存储数据的方式。在

而不是使用5个值对每个值进行50k散列。使用5个散列,每个散列值为50k。在

例如,您的哈希依赖于eventid,并且您在该哈希中存储新的\u代码、旧的\u代码和其他内容

现在,对于新的_代码,有一个散列映射,其中包含eventid作为成员,其值作为value。所以新的_代码本身就是一个包含50k成员值对的哈希映射。在

所以循环5次而不是50k会相对更快。在

我做了一个小实验,下面是数字50k hashes * 5 elements

Memory : ~12.5 MB

Time to complete loop through of elements : ~1.8 seconds

5 hashes * 50k elements

Memory : ~35 MB

Time to complete loop through of elements : ~0.3 seconds.

我已经用简单的字符串进行了测试,比如KEY_I和VALUE_I(其中I是递增器),因此在您的情况下内存可能会增加。而且我刚刚浏览了数据,我没有做任何操作,所以时间也会根据你的情况而变化。在

正如您所看到的,这种改变可以使您的性能提高5倍,2倍的内存。在

Redis对一定范围内的哈希值进行压缩(512-默认值)。因为我们的存储量超过了这个范围(50k),所以内存中就出现了这个峰值。在

基本上,这是一个权衡,它取决于你选择一个最好的适合你的申请。在

关于第一个问题:在每个散列中都会得到新的_代码值,现在

所有内容都在一个哈希中->只是一个调用。在

然后,你要一个接一个地更新旧的和新的。现在,您可以使用hmset通过一个调用完成这些操作。在

希望这有帮助。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值