位运算判断是否签到
统计用户签到情况
获取用户某月签到情况,默认当前月,返回当前月的所有日期以及该日期的签到情况。
SignController
SignService:
获取某月签到情况,默认当月:
- 获取登录用户信息
- 构建 Redis 保存的 Key
- 获取月份的总天数(考虑 2 月闰、平年)
- 通过 BITFIELD 指令获取当前月的所有签到数据
- 遍历进行判断是否签到,并存入 TreeMap 方便排序
总结
由于 String 数据类型的最大长度是 512M,所以 String 支持的位数是 2^32 位。512M 表示字节 Byte 长度,换算成位 bit 需要乘以 8,即 512 2^10 2^10 * 8=2^32;
Strings 的最大长度是 512M,还能存更大的数据?当然不能,但是我们可以换种实现思路,就是将大 key 换成小 key,这样存储的大小完全不受限。