准备工作(在项目中一般是要写到公共服务中)
- 导入依赖包
<!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- spring2.X集成redis所需common-pool2 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.6.0</version> </dependency>
- 在配置文件中配置Redis
# Redis配置 spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.database=0 spring.redis.timeout=1800000 spring.redis.lettuce.pool.max-active=20 spring.redis.lettuce.pool.max-wait=-1 # 最大阻塞等待时间(负数表示没限制) spring.redis.lettuce.pool.max-idle=5 spring.redis.lettuce.pool.min-idle=0
- 创建redis缓存配置类,配置插件(较为固定)
package com.xsha.servicebase; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import java.time.Duration;
/** * 说明:redis配置类 * 作者:FH Admin * from:fhadmin.cn */@Configuration @EnableCaching public classRedisConfigextendsCachingConfigurerSupport{ @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); RedisSerializer<String> redisSerializer = new StringRedisSerializer(); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setConnectionFactory(factory); //key序列化方式 template.setKeySerializer(redisSerializer); //value序列化 template.setValueSerializer(jackson2JsonRedisSerializer); //value hashmap序列化 template.setHashValueSerializer(jackson2JsonRedisSerializer); return template; } @Bean public CacheManager cacheManager(RedisConnectionFactory factory) { RedisSerializer<String> redisSerializer = new StringRedisSerializer(); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); //解决查询缓存转换异常的问题 ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); // 配置序列化(解决乱码的问题),过期时间600秒 RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig() .entryTtl(Duration.ofSeconds(600)) .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer)) .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)) .disableCachingNullValues(); RedisCacheManager cacheManager = RedisCacheManager.builder(factory) .cacheDefaults(config) .build(); return cacheManager; } }
- 因为首页接口对应获取的首页数据变化不大,但访问量较大,所以就有必要将首页接口数据缓存到redis缓存中,减少数据库压力和提高访问速度
- Spring Boot缓存注解
- 缓存
@Cacheable
(一般用在查询的方法上)- 根据方法对其返回结果进行缓存,下次请求时,如果缓存存在,则直接读取缓存数据;如果不存在,则执行方法,并把返回的结果存入缓存中
- 属性及其描述
- value:缓存名称,必填,指定缓存存放在哪块命名空间
- cacheNames:与value差不多,二选一即可
- key:可选属性,可以使用SpEL标签自定义缓存的key
- 缓存
@CachePut
(一般用在新增的方法上)- 使用该注解标志的方法,每次都会执行,并将结果存入指定的缓存中。其他方法可以直接从响应的缓存中读取缓存数据,而不需要再去查询数据库
- 属性及其描述
- value:缓存名称,必填,指定缓存存放在哪块命名空间
- cacheNames:与value差不多,二选一即可
- key:可选属性,可以使用SpEL标签自定义缓存的key
- 缓存
@CacheEvict
(一般用在更新或者删除的方法上)- 使用该注解标志的方法,会清空指定的缓存
- 属性及其描述
- value:缓存名称,必填,指定缓存存放在哪块命名空间
- cacheNames:与value差不多,二选一即可
- key:可选属性,可以使用SpEL标签自定义缓存的key
- allEntries:是否清空所有缓存,默认为false,如果指定为true,则方法调用后将立即清空所有的缓存
- beforeInvocation:是否在方法执行前就清空,默认为false,如果指定为true,则在方法执行前就会清空缓存
- 注意事项: 属性key的值需要再价格单引号,不然会报错。如@Cacheable(key="'keyName'", value="valueName")
- 缓存
相关推荐
以上就是Spring Boot整合Redis的相关知识点,包括配置、数据操作、模板引擎Thymeleaf、数据源Druid、声明式事务管理和Redis事务的使用。通过这些知识,你可以构建一个具备数据缓存能力的Web应用。
Spring boot 整合 redis 在redis 中填写配置信息,就可以测试存取值
"Spring Boot整合Redis的完整步骤" 本文将详细介绍Spring Boot整合Redis的完整步骤,包括Spring Boot对Redis的支持、添加依赖、配置RedisTemplate和StringRedisTemplate、使用Redis缓存等。 一、Spring Boot对...
Spring Boot 整合 Redis
Redis作为一个高性能的内存数据存储,除了支持缓存和持久化数据,它还有很多功能,如:在博主分享的上一篇文章中,我们介绍了使用Redis实现的延迟队列功能 【Spring Boot整合Redis通过Zset数据类型+定时任务实现延迟...
Spring Boot整合Redis,通过添加相关依赖,配置Redis连接参数,创建并定制`RedisTemplate`,编写服务层和控制器方法,实现了对Redis的简单操作。这种方式使得在Spring Boot项目中使用Redis变得更加便捷和直观。通过...
在一些要求高一致性(任何数据变化都能及时的被查询到)的系统和应用中,就不能再使用EhCache来解决了,这个时候使用集中式缓存是个不错的选择,因此本文将介绍如何在Spring Boot的缓存支持中使用Redis进行数据缓存...
本资源对应个人博客【Spring Boot整合Redis通过Zset数据类型+定时任务实现延迟队列】教程的源码,提供大家参考学习!不用积分!不用积分!不用积分!重要事情说三遍。 如果资源对你有用,给博主一键三连鼓励一下! ...
以上就是Spring Boot整合Redis的基础步骤和一个简单的工具类示例。通过这种方式,你可以利用Redis的高性能特性来提高应用程序的响应速度和数据处理能力。在实际项目中,还可以考虑使用Redis的其他高级特性,如发布/...
本项目基于微服务架构,使用Spring Boot整合Redis,实现了高效的秒杀系统,并通过全局唯一ID(UUID)和乐观锁技术来防止库存超卖问题。此外,还利用JMeter进行性能测试,确保系统能在每秒处理千万级别的并发请求。...
本压缩包文件包含的是关于如何在Spring Boot项目中集成和配置Redis,以及如何设置Redis的单机和集群模式的教程或示例代码。 首先,让我们详细了解一下Spring Boot集成Redis的基础知识。Spring Boot提供了自动配置的...
Spring-Boot-Redis-Session Spring Boot整合Redis,详情请查看依赖Spring Boot依赖(创建项目时选择) Sprint Boot2.1.5.RELEASE由于spring-boot-starter-parent 2.1.5.RELEASE中的会话需要安全性支持,故此需要约会...
在本项目中,我们主要探讨的是如何利用Spring Boot构建微服务架构,并整合Redis实现高效的秒杀功能。同时,为了防止库存超卖,我们将采用乐观锁策略,并通过JMeter进行性能测试,确保系统能够处理每秒千万级别的并发...
以上就是关于Spring Boot整合Redis实现缓存功能的基本流程。通过这种方式,我们可以在不修改原有业务逻辑的情况下,利用Redis的高效缓存能力提升应用性能。同时,配合Redis Desktop Manager,我们可以便捷地查看和...
SpringBoot整合Redis是现代Web应用中常见的数据存储与缓存技术结合方式,它极大地简化了在SpringBoot项目中配置和使用Redis的过程。Redis是一个高性能的键值对存储系统,适用于处理大量数据,常用于缓存、消息队列、...
《Spring Boot整合Redis、MyBatis与MySQL:构建高效缓存与数据访问系统》 在现代Web开发中,Spring Boot以其简洁的配置和强大的功能深受开发者喜爱。在本项目"spring-boot-redis.zip"中,我们将探讨如何将Spring ...
### Spring Boot 整合 Redis 实现详解 #### 一、Redis 概述 Redis 是一款高性能的开源非关系型数据库,使用 C 语言编写。它将数据存储在内存中,这意味着相较于传统的磁盘存储数据库,Redis 提供了更快的数据访问...
在现代Web应用开发中,Spring Boot以其...总结来说,Spring Boot整合Redis涉及了基础配置、数据操作、集群和哨兵模式的应用,以及分布式锁和缓存等高级功能。熟练掌握这些内容,可以有效提升Web应用的性能和可靠性。