Spring Boot + Redis BitMap 实现签到与统计功能

文章介绍了如何使用RedisBitMap功能优化签到和统计功能,包括基本用法、SpringBoot集成、连续签到天数计算以及避免缓存穿透的解决方案。通过BitMap高效地管理大量用户签到数据,节省内存资源。
摘要由CSDN通过智能技术生成

引言

在各个项目中,我们都可能需要用到签到和 统计功能。签到后会给用户一些礼品以此来吸引用户持续在该平台进行活跃。

签到功能,我们可以通过Redis中的 BitMap功能来实现

一、Redis BitMap 基本用法

BitMap 基本语法、指令

签到功能我们可以使用MySQL来完成,比如下表:

图片

用户一次签到,就是一条记录,假如有1000万用户,平均每人每年签到次数为10次,则这张表一年的数据量为 1亿条

每签到一次需要使用(8 + 8 + 1 + 1 + 3 + 1)共22 字节的内存,一个月则最多需要600多字节

这样的坏处,占用内存太大了,极大的消耗内存空间!

我们可以根据 Redis中 提供的 BitMap 位图功能来实现,每次签到与未签到用0 或1 来标识 ,一次存31个数字,只用了2字节 这样我们就用极小的空间实现了签到功能

BitMap 的操作指令:

  • SETBIT:向指定位置(offset)存入一个0或1

  • GETBIT:获取指定位置(offset)的bit值

  • BITCOUNT:统计BitMap中值为1的bit位的数量

  • BITFIELD:操作(查询、修改、自增)BitMap中bit数组中的指定位置(offset)的值

  • BITFIELD_RO:获取BitMap中bit数组,并以十进制形式返回

  • BITOP:将多个BitMap的结果做位运算(与 、或、异或)

  • BITPOS:查找bit数组中指定范围内第一个0或1出现的位置

使用 BitMap 完成功能实现

服务器Redis版本采用 6.2

进入redis查询 SETBIT 命令

图片

新增key 进行存储

图片

查询 GETBIT命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值