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进行投诉反馈,一经查实,立即删除!