版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32534855/article/details/86062715
场景:一个店铺一天只能签到一次
知识储备:redis set结构。
- sadd:添加 网址:http://www.runoob.com/redis/sets-sadd.html
- sismember :判断是否存在当前key 网址:http://www.runoob.com/redis/sets-sismember.html
- expireat :设置过期时间 网址:http://www.runoob.com/redis/keys-expireat.html
- unix:https://baike.baidu.com/item/unix%E6%97%B6%E9%97%B4%E6%88%B3/2078227?fr=aladdin
实现:
//签到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();
}