redisTemplate常用操作
不足之处欢迎留言
1、1+5个接口
总接口:RedisOperations<K, V>
源码中redisTemplate实现自总接口,内部以下5个接口分别对应操作5中数据类型
接口1:ValueOperations<K, V>----------------------------字符串
接口2:ListOperations<K, V>-------------------------------List
接口3:SetOperations<K, V> ------------------------------Set
接口4:ZSetOperations<K, V>-----------------------------有序Set
接口5:HashOperations<K, HK, HV>---------------------Hash
2、基本操作
2.1、springboot引入依赖
2.2、注入redisTemplate
@Autowired
private RedisTemplate<String, String> redisTemplate;
设置默认过期时长:
public static final long DEFAULT_EXPIRE = 60 * 60 * 24;
不设置过期时间:
public static final long NOT_EXPIRE = -1;
2.3、常用API
redisTemplate.opsForValue().set(“id”, “1”);
redisTemplate.opsForValue().get(“id”);
重命名key,新key不存在时才执行:
Boolean a = redisTemplate.renameIfAbsent(“id”, “newId”);
删除一个key:
redisTemplate.delete(“id”);
删除key集合:
List kList = ids.stream().map(k -> k).collect(Collectors.toList());
redisTemplate.delete(kList);
指定key的过期时间:
Boolean B = redisTemplate.expireAt(“id”, Date);
将key设置为永久有效:
Boolean n = redisTemplate.persist(“id”);
设置key的生命周期:
Boolean b = redisTemplate.expire(“id”, DEFAULT_EXPIRE, TimeUnit);
查询key的生命周期:
Long timeOut = redisTemplate.getExpire(“id”);
2.4、三种清除过期key策略
- 被动(惰性):读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key
特点1-----获取某个key时,redis会检查是否过期,若过期了,则删除并返回null。
特点2-----过期的key在不被执行操作前依然存在并占用内存。 - 主动:被动删除策略无法保证冷数据被及时删掉,所以Redis会定期主动淘汰一批已过期的key
特点1-----serverCron 作为无限循环时间事件(定期执行一次)直到redis服务停止。
特点2-----redis2.6版每秒执行10次,redis2.8版以后可以设置hz自定义美妙执行次数。
特点3-----周期性的(特点2)随机测试一波设置了过期时间的key,测试到已过期的则删除。 - 触发主动:当前已用内存超过maxmemory限定时,触发主动清理策略
特点-----当前已用内存超过此值,则触发主动策略。
参考博文:
http://www.cnblogs.com/chenpingzhao/p/5022467.html?utm_source=tuicool&utm_medium=referral