0
点赞
收藏
分享

微信扫一扫

【代码】Java设置时间Redis第二天过期

兮城 2022-04-04 阅读 59
java

用在哪 : 要给一个东西设置有效时间 , 到第二天0点过期失效 , 用Redis

项目组要求整齐就好 , 没有指定怎么弄 , 我就弄成"项目名 + key名 + yyyy-MM-dd + 唯一标识"

这里其他部分略,

本篇只讲两点

①yyyy-MM-dd怎么弄出来插进Redis的key里

②怎么设置第二天过期

************************************************************************

①yyyy-MM-dd怎么弄出来插进Redis的key里

步骤1/3 因为是要插在Redis里弄成String格式 , 格式按你自己喜好

    // 时间对象格式化为字符串
    // 用来做今日访问量
    public static String getyyMMdd(){
        long currentTime = System.currentTimeMillis(); // 当前时间戳
        Date date = new Date(currentTime);// 时间戳转换为时间
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        return simpleDateFormat.format(date);
    }

步骤2/3 用你自己拼接RedisKey的方法拼上去就好了 , 比如这样

    public String linkKey(String... linkContents){
        StringBuilder sb = new StringBuilder(100);
        sb.append(prefix);
        for (String linkContent : linkContents) {
            sb.append(":").append(linkContent);
        }
        return sb.toString();
    }

步骤3/3 拼接Key

→用指定好的枚举钥,比如我是HolaOrange,我就弄一个这样的,key就好了

String key = RedisKey.IAMORANGE.linkContent(日期,唯一标识);
// 日期怎么弄看下面

②怎么设置第二天过期

步骤1/3 先算出现在距离过期还有多久

直接用Calender搞,

我看别人也有这么写的, 直接写1天哈哈,这里精度我没研究直接摆long,查完我会回来填坑的(bushi

写完了摆工具类里

    // 今天剩余时间
    public static long todayHaveTime(){
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DAY_OF_YEAR, 0); // 0天
        cal.set(Calendar.HOUR_OF_DAY, 23);// 23小时
        cal.set(Calendar.MINUTE, 59); // 59分
        cal.set(Calendar.SECOND, 59); // 59秒
        cal.set(Calendar.MILLISECOND, 999); // 999ms 因为1s=1000ms
        return (long) ((cal.getTimeInMillis() - System.currentTimeMillis()) / 60000.00);
        // 这里是为了Redis在设置时候弄的第三个参数,单位是分钟,
        // 所以我算出来除以1000ms变成秒单位,
        // 再除以60就是以分钟为单位了
    }

步骤2/3 什么时候调用这个方法:

//API一目了然而且项目是SpringBoot项目所以用的这
@Autowired
private StringRedisTemplate template;

...中间代码略
template.opsForValue().set(key,value,插在这第三个参数这,TimeUnit.SECONDS);
// 看到了吗第四个参数单位是秒,所以中间的第三个参数单位一定要是秒,
// 如果第四个参数是其他单位,第三个的值就随之改就好了

步骤3/3 插在代码哪里

比如用户买了一张票, 成功交易的那一刻 , 把东西存入Redis , 

实体按格式造key , 拿到value, 然后把倒计时插入第三个参数,确定好单位(第四个参数) , 存入Redis以后就开始倒计时了

举报

相关推荐

java第二天

Java第二天

JAVA第二天

java学习 第二天

JAVA学习第二天

RHCSA第二天

CSS第二天

html第二天

出差第二天

0 条评论