Redis实战系列(3) 使用hashtable和hash-max-zipmap-entries优化内存使用

本文介绍了如何在Redis中利用hashtable和hash-max-zipmap-entries参数进行内存优化。在拥有50000个用户的系统中,每个用户有多个昵称和一个profile_id,原本的存储方案是为每个字段创建单独的hashtable,导致内存占用过大。通过调整策略,将所有信息存储在一个key的hashtable中,并设置hash-max-zipmap-entries,当元素数量低于设定值时使用zipmap压缩存储,从而降低了内存消耗。
摘要由CSDN通过智能技术生成

在我的系统中大约有50000个用户,每个用户有nickname1、nickname2、nickname3、nickname4、profile_id。对于上面几个属性来说,每个用户都是唯一的,而用户信息大概有70个字段。我用user:info:$profile_id作为一个hashtable的key来存储一个用户的所有信息。而系统要求能用nickname1、nickname2、nickname3、nickname4来获取到用户信息。

最先考虑的是每个字段对应一个hashtable:user:nickname1:profile_id:map作为一个key,$email作为hashkey, $profile_id作为hashkey的值。对四个字段都做如是的处理,这样处理的内存占用量大概是15M,总共有4个hashtable,每个hashtable中有50000个元素,总共有200000个元素。

        下面先解释一下hash-max-zipmap-entries和hash-max-zipmap-value,然后再介绍第二种方案。

hash-max-zipmap-entries是只hashtable中元素的总个数不超过设定数量时,就用zipmap的方式来存储hashtable以节省内存


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值