Redis内存空间节省小技巧

本文介绍了一种自定义编码/解码方法,用于将用户的多个权益推荐次数压缩到一个Redis字符串值中,从而减少键的数量,节省Redis内存。针对会员权益推荐场景,通过设置占位符来存储每项权益的推荐次数,实现在单个Redis记录中聚合多种业务意义,有效节省了空间。详细介绍了编码、解码工具包的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        简介:一种自定义的编码/解码方式,将聚合的业务数据转换为字符串,作为Redis的值保存。有效减少相同用户在不同业务数据记录中所使用的Key数量,节约Reids内存空间。成熟小工具,CV即可使用,拿走不谢。。        

        业务场景:为提升会员对当前等级的权益感知,需对用户仍未领取的权益进行弹框或运营位置展示推荐。会员需推荐权益有10+项,且每项权益均需记录当日推荐次数,并以此做推送限制。由于推送数据非核心数据,且需每日过期及快速查询,故采用Redis缓存记录推荐次数;

        问题产生:由于会员数据庞大,如果将每个用户的每项权益都记入缓存,将占用大量内存空间。按照生产日活2000w数据计算,每个用户10项权益记录,将耗费20g内存空间。对Redis服务器内存造成很大的负担;

        常规与压缩方案对比:举例数据(5项权益:生活特权、升级有礼、生日有礼、每月券包、注册有礼。用户ID:E7F0618DDE68470B8B332C2DA884320C)

        1)常规做法:key键 = 前缀(RECOMMONE) + 会员号(USERID) + 权益编码(EQUITY_CODE),Value值 = 权益已推荐次数,会员每推荐成功一项权益,调用incrByLong函数将值增1。此会员5项权益均进行了推荐,Redis记录了其对应权益的推荐次数,记录的键值对数据如下:

                                       表1:压缩前同一用户有5条权益推荐记录数据

        2)压缩设计:key键 = 前缀(RECOMMONE) + 会员号(USERID) ,采用同一用户只记录一条权益推荐记录,提前确认权益推荐次数的最大值并分配占位位数,每项权益通过占位标识来获取。本业务需求中,权益推荐最大次数为单天12次,故需两个占位符来标识权益项。此时Redis记录数据:


                                        表2:压缩后同一用户只有一条记录数

 

压缩后,单条记录value值为03050111041,每两位标识一项权益的已推荐数,拆解图如下:

        

        如上图,每两个占位代表一项权益的推荐次数。03表示生活特权权益项已经推荐了3次、05表示升级有礼权益项推荐了5次,依次类推。使一个redis的string值聚合了多种业务意义,有效节省了redi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值