Spring中如何操作Redis
Spring毕竟是Java中的一个主流框架,如何在这个框架中使用Redis呢?
创建项目并引入相关依赖
然后进行创建。
至此就将Redis的相关依赖引入进来了。
编写Redis配置
将application.properties修改成application.yml
然后编写如下配置:
spring:
redis:
host: 127.0.0.1
port: 8888
编写代码
与Jedis不同的是,在Spring中需要通过StringRedisTemplate这个类来进行操作。
并且在这个类中会发现,没有与命令行对应的API。
原因如下:
为了对API进行分类,将每个类型的操作进行了封装,分到了其他类中。
| 方法 | 功能 |
| opsForValue | 封装了String类型的API |
| opsForHash | 封装了Hash类型的API |
| opsForList | 封装了List类型的API |
| opsForSet | 封装了Set类型的API |
| opsForZset | 封装了Zset类型的API |
@SpringBootTest
class SpringRedisTestApplicationTests {
@Autowired
StringRedisTemplate redisTemplate;
@Test
void test01(){
redisTemplate.opsForValue().set("key1", "value1");
String s = redisTemplate.opsForValue().get("key1");
Assertions.assertEquals("value1", s);
}
}
如果要想执行flushAll呢?我们会发现根本找不到这样的API
难不成是出于安全的原因进行的考虑吗?当然不是,因为来年ping这种命令也没有封装。
那该怎么操作呢?当然在设计之初也进行了保留。
通过execute方法执行回调,即可实现原生指令的操作~
在RedisConnection中会发现,这个类继承一堆的类,这些类中就提供了基本指令的操作。
也可将每个RedisConnection简单理解为Jedis对象,也表示的是一个连接。
通过观察源码,会发现,这个回调函数必须要有返回值,而这个返回值也会作为execute的返回值。
@SpringBootTest
class SpringRedisTestApplicationTests {
@Autowired
StringRedisTemplate redisTemplate;
@Test
void test01(){
redisTemplate.execute((RedisConnection connection) -> {
connection.flushAll();
return null;
});
redisTemplate.opsForValue().set("key1", "value1");
String s = redisTemplate.opsForValue().get("key1");
Assertions.assertEquals("value1", s);
}
}
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!





