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);









![[Linux 进程控制(二)] 写时拷贝 - 进程终止](https://img-blog.csdnimg.cn/direct/6608983d21bd4d14ab515a1fbcbcaa6d.png)









