签到服务模板

使用的技术栈有bitmap

bitmap也叫位图,也就是用一个bit位来表示一个东西的状态,我们都知道bit位是二进制,所以只有两种状态,0和1。

为什么要使用bitmap?

mysql单表里超过2000万条数据,查询效率会明显降低直线下降。bitmap的出现就是为了大数据量而来的,但是前提是统计的这个大数据量每个的状态只能有两种,因为每一个bit位只能表示两种状态。节省存储空间。

bitmap命令

技术细节

我们的签到服务正常只需要保存两种状态[签到、未签到],比如0表示未登录,1表示登录。 bitmap有个setbit命令:setbit key 偏移量[用户ID] 值[0|1]

我们这个签到服务还保存了用户连续签到的天数。 用户签到之前先判断用户今天是否签到过,如果没有签到,就进行签到,然后更新连续签到的天数。 设置连续签到的过期时间[后天的0:0:0] 使用了redisTemplate的expireAt(key,固定的时间点)过期方式。 过期的时间应该是在后天的0点0分0秒,我使用了JDK8中的新日期API: LocalDateTime.now().plusDays(2).withHour(0).withMinute(0).withSecond(0); 还有个功能是:判断某天有多少个用户进行了签到。可以使用bitcount获取一段时间内用户签到了多少次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值