让你设计实现一个签到功能,到底用MySQL还是Redis?
你知道的越多,不知道的就越多,业余的像一棵小草!
你来,我们一起精进!你不来,我和你的竞争对手一起精进!
编辑:业余草
推荐:https://www.xttblog.com/?p=5097
一个签到功能,可以实现得很复杂(涉及到积分,任务,并发等),也可以实现得很简单。今天我只提供思路,不涉及具体实现,也欢迎大家评论留言说说自己得见解!
一. 方案1
签到流程
last_checkin_time = time()
checkin_count=1
last_checkin_time = time()
checkin_count= checkin_count+1
last_checkin_time = time()
checkin_count=1
二. 方案2
签到流程
-
一个以每天日期为key ,每个uid为偏移量
-
一个以用户uid为key ,当天在一年中的索引为偏移量,
//每天一个keyString key = "checkin_" + "日期yyyy-m-d";if(redisService.getbit(key, userid)){//已签到}else{//签到redisService.setbit(key, uid, 1);}
public int getUserCheckinCount(String uid){String key = "checkin_" + uid;// 查询昨日签到是否连续进行逻辑计算}
String key = "checkin_" + "yyyy-m-d";Long count = redisService.BITCOUNT(key);
