前言
前面咱们简单介绍了SpringDataRedis点击这里前往SpringDataRedis简介。
熟悉Spring的JdbcTemplate对象的话,应该大概能猜出来RedisTemplate的作用了,RedisTemplate对象对RedisConnection进行了封装,它提供了连接管理,序列化等功能,它对Redis的交互进行了更高层次的抽象。另外还提供了Redis操作命令的操作视图,这极大的方便和简化了Redis的操作。
下面咱们挑两个主要的类进行使用吧
首先使用@Autowired注入RedisTemplate
@Autowired
private RedisTemplate redisTemplate;
一、添加操作和查看操作
1、ValueOperations
这里主要介绍几个常用的几个功能,要是想探索更多功能,建议阅读源码鸭
这里介绍两个设置值的方法,一个直接set,一个set的时候需要自己手动超时时间
//ValueOperations:简单K-V操作
private ValueOperations ops;
@Test
void testSet(){
//通过ValueOperations设置值
ops = redisTemplate.opsForValue();
ops.set("opsKey","opsValue");
ops.set("opsTimeKey","opsTimeValue",1, TimeUnit.MINUTES);
ops.set("opsTimeKey1","opsTimeValue1", Duration.ofMinutes(1));
//得到值
System.out.println(ops.get("opsKey"));
System.out.println(ops.get("opsTimeKey"));
System.out.println(ops.get("opsTimeKey1"));
}
testSet运行的结果如下
刚刚咱们试了一下get,下面再尝试一下getAndSet和append,从源码来看,只需要传两个值就OK啦
咱们来测试一下
ops.getAndSet("opsKey","opsKeyisSet");
System.out.println(ops.get("opsKey"));
ops.append("opsKey","+append");
System.out.println(ops.get("opsKey"));
运行结果如下:
2、BoundValueOperations
提供了对key的“bound”(绑定)便捷化操作API,可以通过bound封装指定的key,然后进行一系列的操作而无须“显式”的再次指定Key,即BoundKeyOperations
让我们来看看咋个用
你可能会觉得奇怪,它的怎么没有填入key值?那我们就往下继续观看观看
这里看到我们调用boundValueOps这个方法的时候,需要传入一个key值,我们再点进去DefaultBoundValueOperations里面看看
我们可以看到底层还是采用了ValueOperations
所以BoundValueOperations也只是对ValueOperations进行了进一步的封装
知道了这些,那我们开始进行测试吧
private BoundValueOperations boundKey;
@Test
public void testBoundSet(){
boundKey= redisTemplate.boundValueOps("boundKey");
boundKey.set("boundValue");
System.out.println(boundKey.get());
}
测试结果如下:
其他的内容跟ValueOperations差不多的哈,只是省略了一个key,自己看接口内容多尝试尝试
三、删除操作
前面说了设置key和得到key,下面咱们主要来讲讲如何删除值,首先咱们来直接测试一些
//删除key
@Test
public void testDelete(){
System.out.println(redisTemplate.delete("boundKey")?"删除成功":"找不到key");
}
测试结果如下:
出于好奇,咱们点进去看一看:
可以发现删除的操作放在了RedisTemplate这个类里面,并且这个方法的是个bool值,在这个方法下面,咱们还发现了一个删除方法,这个删除方法返回的值是Long
可以删除多个key
public void deleteManyKey (String ...keys){
//删除多个key
redisTemplate.delete(keys);
}
四、其他
在redisTemplate这个类里面,咱们还发现了一些其他操作
1、指定key的失效时间
前面咱们是在通过设置值的时候指定的失效时间,这里咱们可以用expire()这个方法指定某个key的失效时间
redisTemplate.expire("expireKey",1,TimeUnit.MINUTES);
判断一个值是否存在
redisTemplate.hasKey("boundKey");
总结
熟悉了ValueOperations和BoundValueOperations,学会了简单的增删改查操作