让你设计实现一个签到功能,到底用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 ,当天在一年中的索引为偏移量,
//每天一个key
String 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);