本文介绍: 在Redis中,我们可以使用expireat、pexpireat命令来设置key的过期时间为指定日期。expireat命令的时间参数为UNIX时间戳,而pexpireat命令的时间参数为UNIX时间戳的毫秒表示。实际上,有时候,我们为了方便,还会设置具体的时间节点,而不是这样固定的时间数字。上面的案例使用的固定时间数字,比如,向后推迟1分钟,1小时,1天等,都可以自己计算出来。jedis.setex()这个方法,就可以带一个(单位:秒)的参数。那么,想输入具体的时间节点也是可以的,是用到另外一个方法。

redis数据库设置对象的过期时间,到期后自动删除该条数据!过期时间的事情经常发生。比如大家领到了一些购物券。这张购物券有一个过期时间。必须在某节点之前(某年某月末日)之前,使用掉,否则该券就会过期,无法再使用了。


下面就是redis设置过期时间的简单案例。

 @Test
        public void testRedisTime(){
            Jedis jedis = new Jedis("localhost",6379);


            //向redis数据库增加一条数据,带上过期的时间,1分钟后过期。

            jedis.setex("xiang03",60,"姹紫嫣红003");

            //创建定时器
            Timer timer = new  Timer();
            //创建定时器任务
            TimerTask timerTask = new TimerTask() {
                @Override
                public void run() {
                    System.out.println(jedis.get("xiang03"));
                }
            };
            timer.schedule(timerTask,1000*61);
        }

jedis.setex()这个方法,就可以带一个(单位:秒)的参数。第一个参数key.第二个参数过期时间(在当前的基础之上,向后推迟多少秒)。第三个参数是value.

我们设置了一个鲜花的数据,key:xiang03;value:姹紫嫣红03;过期时间是60秒后过期。

等到时间超过60秒之后,我们再去数据库内搜索这条key。就会出现返回了null.空对象。找不到了。说明redis已经删除了这条数据。


实际上,有时候,我们为了方便,还会设置具体的时间节点,而不是这样固定的时间数字。上面的案例使用的固定时间数字,比如,向后推迟1分钟,1小时,1天等,都可以自己计算出来。前提是你得输入是秒为单位。大家换算一下就行了。


那么,想输入具体的时间节点也是可以的,是用到另外一个方法。

redis设置指定日期过期的方法如下: 

在Redis中,我们可以使用expireat、pexpireat命令来设置key的过期时间为指定日期。expireat命令的时间参数为UNIX时间戳,而pexpireat命令的时间参数为UNIX时间戳的毫秒表示。可以使用Java的Date类或Calendar类将时间转换为UNIX时间戳。

// 使用jedis的expireAt方法设置key在2019-01-01 00:00:00时过期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse("2019-01-01 00:00:00");
long unixTime = date.getTime()/1000;
jedis.expireAt("key", unixTime);

 

原文地址:https://blog.csdn.net/yrldjsbk/article/details/136008490

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_65779.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注