redis失效时间问题总结

1、在没有设置Redis的Value的时候,设置key的失效时间没有用

1
2
3
String redisKey = "test:string";
BoundValueOperations<String, String> redisOper = redisTemplate.boundValueOps(redisKey);
redisOper.expire(10, TimeUnit.DAYS);

2、对于Redis 字符串(String),设置了失效日期之后再设置值,那么将会丢掉失效日期

01
02
03
04
05
06
07
08
09
10
11
String redisKey = "test:string";
BoundValueOperations<String, String> redisOper = redisTemplate.boundValueOps(redisKey);
redisOper.expire(10, TimeUnit.DAYS);
System.out.println(redisOper.getExpire());
redisOper.set("----------");
redisOper.expire(10, TimeUnit.DAYS);
System.out.println(redisOper.get());
System.out.println(redisOper.getExpire());
redisOper.set("-----+-----");
System.out.println(redisOper.get());
System.out.println(redisOper.getExpire());

3、当Redis hash中的键值对清空的时候,这个Redis Key也被Redis删除了,也就没有失效日期了

01
02
03
04
05
06
07
08
09
10
11
12
13
14
String redisKey = "test:hash";
BoundHashOperations<String,String,String> redisOper = redisTemplate.boundHashOps(redisKey);
System.out.println(redisOper.getExpire());
redisOper.put("name","xiaoming");
redisOper.put("sex","man");
redisOper.expire(10, TimeUnit.DAYS);
System.out.println(redisOper.size());
System.out.println(redisOper.getExpire());
redisOper.delete("name");
System.out.println(redisOper.size());
System.out.println(redisOper.getExpire());
redisOper.delete("sex");
System.out.println(redisOper.size());
System.out.println(redisOper.getExpire());

发表评论

欢迎阅读『redis失效时间问题总结|Java、数据存储、软件安装|Nick Tan-梓潼Blog』