场景:一个店铺一天只能签到一次
知识储备: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();
}