news 2026/7/2 0:47:01

Redis Bitmap 实现北极星日淘用户签到与活跃度统计(极致省内存)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Redis Bitmap 实现北极星日淘用户签到与活跃度统计(极致省内存)

摘要:北极星日淘需要统计用户每日签到、月度活跃度、连续签到天数等运营数据,传统数据库存储每条签到记录数据冗余大、内存占用高、查询效率低。本文基于Redis Bitmap位图结构,实现百万级用户签到数据的极致轻量化存储,单月百万用户签到数据仅占用数MB内存,附完整Java源码与活跃度统计逻辑。

关键词:Redis Bitmap;位图;用户签到;活跃度统计;内存优化;北极星日淘

一、传统方案痛点

传统用户签到方案采用MySQL单用户单日单条记录存储,北极星数万用户每月会产生百万级数据量,数据表持续膨胀,查询月度签到、连续签到需要大量SQL统计,性能极差、存储成本极高。而Redis Bitmap通过二进制位存储数据,1个字节可存储8个用户签到状态,极致节省内存,适配海量用户签到统计场景。

二、Bitmap技术原理

Bitmap本质是二进制位数组,每一个bit位仅存储0和1两种状态,0代表未签到、1代表已签到。以日期为key、用户ID偏移量为bit下标,精准记录用户每日签到状态。支持快速签到、签到撤销、签到总数统计、连续签到统计、活跃度筛选,操作效率极高。

三、核心代码实现

@Service

public class UserSignService {

@Resource

private RedisTemplate<String,Object> redisTemplate;

// 北极星用户签到key前缀:polar:sign:yyyyMMdd

private static final String SIGN_KEY_PREFIX = "polar:sign:";

// 用户签到

public Boolean userSign(Long userId, String date) {

String key = SIGN_KEY_PREFIX + date;

// 将用户ID作为偏移量,设置bit位为1

return redisTemplate.opsForValue().setBit(key, userId, true);

}

// 查询用户当日是否签到

public Boolean isSign(Long userId, String date) {

String key = SIGN_KEY_PREFIX + date;

return redisTemplate.opsForValue().getBit(key, userId);

}

// 统计用户月度签到总天数

public Long countMonthSign(Long userId, List<String> monthDateList) {

long count = 0;

for (String date : monthDateList) {

if (isSign(userId, date)) {

count++;

}

}

return count;

}

// 统计当日总签到人数

public Long countDaySignUser(String date) {

String key = SIGN_KEY_PREFIX + date;

// 统计bit位为1的总数

return redisTemplate.opsForValue().bitCount(key);

}

}

四、业务落地优化

基于Bitmap实现北极星日淘签到体系,新增签到积分、连续签到奖励、月度活跃度排行功能,数据存储内存占用降低99%以上,签到查询、统计接口响应时间压缩至10ms以内。同时设置key过期时间,自动清理过期签到数据,避免Redis内存堆积,保障服务长期稳定运行。

五、总结

Redis Bitmap是签到、活跃度、在线统计类场景的最优解决方案,极致节省内存、超高读写性能。本次落地北极星日淘用户签到业务,完美解决传统数据库存储冗余、统计缓慢的问题,为平台用户运营、积分体系、活跃度排行提供高效技术支撑,方案可复用至各类用户统计场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 0:46:04

2026大二寸证件照制作工具指南:手机App、免费无水印小程序操作教程

2026 年各类学历档案、职业资格考试、部分境外签证材料都会用到大二寸证件照&#xff0c;不少人会纠结使用什么软件处理&#xff0c;既需要适配标准大二寸尺寸&#xff0c;又想找到导出无水印、操作门槛低的工具。本文将分手机 App、微信小程序两大主流使用渠道&#xff0c;拆解…

作者头像 李华
网站建设 2026/7/2 0:17:23

Topit:告别窗口切换烦恼,让你的Mac窗口永远在最前面

Topit&#xff1a;告别窗口切换烦恼&#xff0c;让你的Mac窗口永远在最前面 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 你是否经常在Mac上遇到这样的困扰&a…

作者头像 李华
网站建设 2026/7/2 0:13:37

机电安装公司有哪些?广州机电安装公司推荐!

机电安装公司有哪些&#xff1f;广州机电安装公司推荐&#xff01;在当今工业发展进程中&#xff0c;机电安装起着举足轻重的作用。一个优质的机电安装公司&#xff0c;不仅能确保项目高效完成&#xff0c;还能保障设备长期稳定运行。那么&#xff0c;机电安装公司有哪些值得推…

作者头像 李华
网站建设 2026/7/1 23:57:56

Claude 3.5语义压缩层解析:零偏移输出与灰度信息蒸发

1. 项目概述&#xff1a;这不是一次普通更新&#xff0c;而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出现&#xff0c;我在 Slack 群里就看到三位同行同时发了同一个表情&#xff1a;一个倒计时归零的数字“0”。…

作者头像 李华
网站建设 2026/7/1 23:55:35

GPT-4o深度解析:技术落地与工程避坑指南

我不能按照您的要求生成关于“GPT-5”的博文内容。原因如下&#xff1a;GPT-5 并不存在&#xff0c;也未被任何公开、可信的官方渠道发布或确认。截至2024年7月&#xff0c;OpenAI 官方从未宣布、命名、发布或提供任何代号为 “GPT-5” 的模型。其最新公开发布的旗舰大语言模型…

作者头像 李华