本文介绍了SpringBoot项目中使用redis缓存的方法步骤,分享给大家,具体如下:
Spring Data Redis为我们封装了Redis客户端的各种操作,简化使用。
– 当Redis当做数据库或者消息队列来操作时,我们一般使用RedisTemplate来操作
– 当Redis作为缓存使用时,我们可以将它作为Spring Cache的实现,直接通过注解使用
1.概述
在应用中有效的利用redis缓存可以很好的提升系统性能,特别是对于查询操作,可以有效的减少数据库压力。
具体的代码参照该 示例项目
2.添加引用
在build.gradle加入
1
|
compile('org.springframework.boot:spring-boot-starter-data-redis')
|
SpringBoot会自动引入redis相关的jar包。加入该引用后,需要在本地安装redis并启动,否则程序启动时会报错。
3.通过注解启用缓存
在SpringBoot中启用redis非常简单,只需要在Application主类上添加@EnableCaching注解,之后在需要启用缓存的查询方法上添加@Cacheable注解。
1
2
3
4
|
@SpringBootApplication
@EnableCaching
public class DemoApplication implements CommandLineRunner{
...
|
查询接口:
1
2
3
4
|
public interface TestRepository extends JpaRepository<Test, Integer> {
@Cacheable (value = "testCache" )
public Test findOne(Integer id);
}
|
实体类需要实现Serializable接口,否则程序会报错,因为无法把java对象序列化到redis中。SpringBoot中redis默认使用DefaultSerializer,这个用的是jdk自身的序列化方法。
总共有以下几种序列化方法,具体的使用场景可以参考官方文档
1. GenericJackson2JsonRedisSerializer
2. GenericToStringSerializer
3. Jackson2JsonRedisSerializer
4. JacksonJsonRedisSerializer
5. JdkSerializationRedisSerializer
6. OxmSerializer
7. StringRedisSerializer
至此我们的程序就具有了从redis缓存中查询数据的能力,如果对redis中存储的KEY的美观程度不介意的话,工作到此就结束了。
4.美观的KEY
执行我们的程序以后,在redis-cli中执行KEY *命令,会发现key的值是一堆类似于乱码的东西:
"testCache:\\xac\\xed\\x00\\x05sr\\x00\\x11java.lang.Integer\\x12\\xe2\\xa0\\xa4\\xf7\\x81\\x878\\x02\\x00\\x01I\\x00\\x05valuexr\\x00\\x10java.lang.Number\\x86\\xac\\x95\\x1d\\x0b\\x94\\xe0\\x8b\\x02\\x00\\x00xp\\x00\\x00\\x00\\x01"
这中key值对于redis的运维人员来说估计是不可接受的,我们要想办法让key值变的好看一些,至少要让人能看得懂。
出现上面的key值的原因就是spring中默认采用了SimpleKey这个类来生成redis的key。
解决方法也很简单,增加缓存配置,指定redis生成key的方式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
@Configuration
public class CacheConfig extends CachingConfigurerSupport {
@Autowired
private RedisTemplate redisTemplate;
@Bean
public CacheManager cacheManager() {
redisTemplate.setKeySerializer( new GenericToStringSerializer<Object>(Object. class ));
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
cacheManager.setDefaultExpiration( 3600 );
cacheManager.setUsePrefix( true );
cacheManager.setCachePrefix( new RedisCachePrefix() {
private final RedisSerializer<String> serializer = new StringRedisSerializer();
private final String delimiter = ":" ;
public byte [] prefix(String cacheName) {
return this .serializer
.serialize(cacheName.concat( this .delimiter));
}
});
return cacheManager;
}
}
|
其中
redisTemplate.setKeySerializer(new GenericToStringSerializer<Object>(Object.class));
这行代码指定了redis中key值的生成方式,GenericToStringSerializer这个序列化方法会把java对象转换为字符串存储到redis中。
5.总结
在SpringBoot中启用redis缓存非常简单,只需要加几个注解即可。同时我们可以通过增加缓存配置的方式,让存储到redis中的key值具有良好的可读性,而不是一堆类似于乱码的数据。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。
原文链接:https://my.oschina.net/hiease/blog/1584163
相关文章
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-05-25 69
-
2025-06-04 57
-
2025-05-27 29
-
2025-05-26 76
-
2025-06-04 68