千家信息网

Spring Boot 2.x中如何使用集中式缓存Redis

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天就跟大家聊聊有关Spring Boot 2.x中如何使用集中式缓存Redis,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。虽然EhCach
千家信息网最后更新 2026年11月02日Spring Boot 2.x中如何使用集中式缓存Redis

今天就跟大家聊聊有关Spring Boot 2.x中如何使用集中式缓存Redis,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

虽然EhCache已经能够适用很多应用场景,但是由于EhCache是进程内的缓存框架,在集群模式下时,各应用服务器之间的缓存都是独立的,因此在不同服务器的进程间会存在缓存不一致的情况。即使EhCache提供了集群环境下的缓存同步策略,但是同步依然是需要一定的时间,短暂的缓存不一致依然存在。

在一些要求高一致性(任何数据变化都能及时的被查询到)的系统和应用中,就不能再使用EhCache来解决了,这个时候使用集中式缓存就可以很好的解决缓存数据的一致性问题。接下来我们就来学习一下,如何在Spring Boot的缓存支持中使用Redis实现数据缓存。

动手试试

本篇的实现将基于上一篇的基础工程来进行。先来回顾下上一篇中的程序要素:

User实体的定义

@Entity@Data@NoArgsConstructorpublic class User implements Serializable {    @Id    @GeneratedValue    private Long id;    private String name;    private Integer age;    public User(String name, Integer age) {        this.name = name;        this.age = age;    }}

User实体的数据访问实现(涵盖了缓存注解)

@CacheConfig(cacheNames = "users")public interface UserRepository extends JpaRepository {    @Cacheable    User findByName(String name);}

下面开始改造这个项目:

第一步:pom.xml中增加相关依赖:

    org.springframework.boot    spring-boot-starter-data-redis    org.apache.commons    commons-pool2

在Spring Boot 1.x的早期版本中,该依赖的名称为spring-boot-starter-redis,所以在Spring Boot 1.x基础教程中与这里不同。

第二步:配置文件中增加配置信息,以本地运行为例,比如:

spring.redis.host=localhostspring.redis.port=6379spring.redis.lettuce.pool.max-idle=8spring.redis.lettuce.pool.max-active=8spring.redis.lettuce.pool.max-wait=-1msspring.redis.lettuce.pool.min-idle=0spring.redis.lettuce.shutdown-timeout=100ms

关于连接池的配置,注意几点:

  1. Redis的连接池配置在1.x版本中前缀为spring.redis.pool与Spring Boot 2.x有所不同。

  2. 在1.x版本中采用jedis作为连接池,而在2.x版本中采用了lettuce作为连接池

  3. 以上配置均为默认值,实际上生产需进一步根据部署情况与业务要求做适当修改.

再来试试单元测试:

@Slf4j@RunWith(SpringRunner.class)@SpringBootTestpublic class Chapter54ApplicationTests {    @Autowired    private UserRepository userRepository;    @Autowired    private CacheManager cacheManager;    @Test    public void test() throws Exception {        System.out.println("CacheManager type : " + cacheManager.getClass());        // 创建1条记录        userRepository.save(new User("AAA", 10));        User u1 = userRepository.findByName("AAA");        System.out.println("第一次查询:" + u1.getAge());        User u2 = userRepository.findByName("AAA");        System.out.println("第二次查询:" + u2.getAge());    }}

执行测试输出可以得到:

CacheManager type : class org.springframework.data.redis.cache.RedisCacheManagerHibernate: select next_val as id_val from hibernate_sequence for updateHibernate: update hibernate_sequence set next_val= ? where next_val=?Hibernate: insert into user (age, name, id) values (?, ?, ?)2020-08-12 16:25:26.954  INFO 68282 --- [           main] io.lettuce.core.EpollProvider            : Starting without optional epoll library2020-08-12 16:25:26.955  INFO 68282 --- [           main] io.lettuce.core.KqueueProvider           : Starting without optional kqueue libraryHibernate: select user0_.id as id1_0_, user0_.age as age2_0_, user0_.name as name3_0_ from user user0_ where user0_.name=?第一次查询:10第二次查询:10

可以看到:

  1. 第一行输出的CacheManager type为org.springframework.data.redis.cache.RedisCacheManager,而不是上一篇中的EhCacheCacheManager了

  2. 第二次查询的时候,没有输出SQL语句,所以是走的缓存获取

整合成功!

看完上述内容,你们对Spring Boot 2.x中如何使用集中式缓存Redis有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

缓存 查询 配置 一致 数据 版本 不同 内容 上一 应用 输出 一致性 基础 实体 情况 时候 服务器 第一次 进程 集群 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技网 湖南永感互联网科技有限公司 互联网通讯科技 青岛互联网科技公司 猪兼强互联网科技 时间互联网络科技 互联网科技有限公司 翻译 甘肃拓世互联网科技有限公司 温州喔噻互联网科技有限公司 中化能源互联网科技招聘 智腾互联网科技有限公司 互联网媒体平台算高科技产业 深圳市罗太互联网科技有限公司 互联网方面的科技前沿 雨阳互联网卡科技有限公司 上海互联网科技公司ppt 江苏互联网智能科技产品出厂价 陕西九四连强互联网科技有限公司 米泉互联网科技专业怎么样 每日互联网科技新闻 新华互联网科技学校 丰台科技园 互联网 美国互联网黑科技 互联网科技网站 浙江互联网科技研学营 苏州五指互联网络科技有限 知域互联网科技有限公司大骗子 互联网科技产业特征 亳州好赞互联网科技有限公司 吉林省码上互联网科技电话
0