本文介绍了SpringBoot项目中使用redis缓存的方法步骤,分享给大家,具体如下:
Spring Data Redis为我们封装了Redis客户端的各种操作,简化使用。
- 当Redis当做数据库或者消息队列来操作时,我们一般使用RedisTemplate来操作
- 当Redis作为缓存使用时,我们可以将它作为Spring Cache的实现,直接通过注解使用
1.概述
在应用中有效的利用redis缓存可以很好的提升系统性能,特别是对于查询操作,可以有效的减少数据库压力。
具体的代码参照该 示例项目
2.添加引用
在build.gradle加入
compile('org.springframework.boot:spring-boot-starter-data-redis')
SpringBoot会自动引入redis相关的jar包。加入该引用后,需要在本地安装redis并启动,否则程序启动时会报错。
3.通过注解启用缓存
在SpringBoot中启用redis非常简单,只需要在Application主类上添加@EnableCaching注解,之后在需要启用缓存的查询方法上添加@Cacheable注解。
@SpringBootApplication @EnableCaching public class DemoApplication implements CommandLineRunner{ ...
查询接口:
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。
解决方法也很简单,增加缓存html" target="_blank">配置,指定redis生成key的方式:
@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值具有良好的可读性,而不是一堆类似于乱码的数据。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍SpringBoot使用Redis缓存的实现方法,包括了SpringBoot使用Redis缓存的实现方法的使用技巧和注意事项,需要的朋友参考一下 (1)pom.xml引入jar包,如下: (2)修改项目启动类,增加注解@EnableCaching,开启缓存功能,如下: (3)application.properties中配置Redis连接信息,如下: (4)新建Redis
本文向大家介绍SpringBoot项目中使用AOP的方法,包括了SpringBoot项目中使用AOP的方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍了SpringBoot项目中使用AOP的方法,分享给大家,具体如下: 1.概述 将通用的逻辑用AOP技术实现可以极大的简化程序的编写,例如验签、鉴权等。Spring的声明式事务也是通过AOP技术实现的。 具体的代码参照 示例项目 https:/
本文向大家介绍Maven搭建springboot项目的方法步骤,包括了Maven搭建springboot项目的方法步骤的使用技巧和注意事项,需要的朋友参考一下 Maven搭建springboot项目 本文是基于Windows 10系统环境,使用Maven搭建springboot项目 Windows 10 apache-maven-3.6.0 IntelliJ IDEA 2018.3.4 x64 一
本文向大家介绍Spring Boot中使用Redis做缓存的方法实例,包括了Spring Boot中使用Redis做缓存的方法实例的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要给大家介绍的是关于Spring Boot中使用Redis做缓存的相关内容,这里有两种方式: 使用注解方式(但是小爷不喜欢) 直接《Spring Boot 使用 Redis》中的redisTemplate 下面来看看
本文向大家介绍IDEA项目使用SpringBoot+MyBatis-Plus的方法,包括了IDEA项目使用SpringBoot+MyBatis-Plus的方法的使用技巧和注意事项,需要的朋友参考一下 步骤如下: 1.打开IDEA 2.File—>new—> project 3.选择spring initializr—>Next 4.填写Grouphe和Artifact,选择Java version
本文向大家介绍ssm开发使用redis作为缓存的使用步骤,包括了ssm开发使用redis作为缓存的使用步骤的使用技巧和注意事项,需要的朋友参考一下 1、关于spring配置文件中对于redis的配置 2、配置自定义的RedisAPI,对redis数据库的管理 3、redis相关依赖 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。