redis,高并发下签到

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32534855/article/details/86062715

场景:一个店铺一天只能签到一次

知识储备:redis set结构。

实现:

//签到key id为店铺id
String key  = "checkin:"+id;
		
//判断今天是否已经签到过
if(jedis.sismember(key, user.getId())){
    //已签到 返回
}else{
    //todo 保存数据到数据库
        
    jedis.sadd(key, user.getId());
    //设置过期时间到今天24点
    jedis.expireAt(key, todayLastDate()/1000);
}

 //获得当天24点毫秒时间函数
protected long todayLastDate() {
 Calendar calendar = Calendar.getInstance();
 calendar.set(Calendar.HOUR_OF_DAY, 23);
 calendar.set(Calendar.MINUTE, 59);
 calendar.set(Calendar.SECOND, 59);
 calendar.set(Calendar.MILLISECOND, 999);
 return calendar.getTime().getTime();
}
		

猜你喜欢

转载自blog.csdn.net/qq_32534855/article/details/86062715