`
qingyu11068
  • 浏览: 67793 次
文章分类
社区版块
存档分类
最新评论

Spring Boot 整合 Redis

 
阅读更多

准备工作(在项目中一般是要写到公共服务中)

  • 导入依赖包
    <!-- 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")

搜索

复制

<iframe src="/admin/blogs/"></iframe>
0
0
分享到:
评论

相关推荐

    Spring Boot整合redis

    以上就是Spring Boot整合Redis的相关知识点,包括配置、数据操作、模板引擎Thymeleaf、数据源Druid、声明式事务管理和Redis事务的使用。通过这些知识,你可以构建一个具备数据缓存能力的Web应用。

    Spring boot 整合 redis

    Spring boot 整合 redis 在redis 中填写配置信息,就可以测试存取值

    Spring Boot整合Redis的完整步骤

    "Spring Boot整合Redis的完整步骤" 本文将详细介绍Spring Boot整合Redis的完整步骤,包括Spring Boot对Redis的支持、添加依赖、配置RedisTemplate和StringRedisTemplate、使用Redis缓存等。 一、Spring Boot对...

    Spring Boot 整合 Redis.docx

    Spring Boot 整合 Redis

    Spring Boot整合Redis实现发布/订阅功能教程配套源码

    Redis作为一个高性能的内存数据存储,除了支持缓存和持久化数据,它还有很多功能,如:在博主分享的上一篇文章中,我们介绍了使用Redis实现的延迟队列功能 【Spring Boot整合Redis通过Zset数据类型+定时任务实现延迟...

    spring boot整合redis demo代码

    Spring Boot整合Redis,通过添加相关依赖,配置Redis连接参数,创建并定制`RedisTemplate`,编写服务层和控制器方法,实现了对Redis的简单操作。这种方式使得在Spring Boot项目中使用Redis变得更加便捷和直观。通过...

    Spring Boot整合Redis做集中式缓存

    在一些要求高一致性(任何数据变化都能及时的被查询到)的系统和应用中,就不能再使用EhCache来解决了,这个时候使用集中式缓存是个不错的选择,因此本文将介绍如何在Spring Boot的缓存支持中使用Redis进行数据缓存...

    Spring Boot整合Redis通过Zset数据类型+定时任务实现延迟队列教程对应源码

    本资源对应个人博客【Spring Boot整合Redis通过Zset数据类型+定时任务实现延迟队列】教程的源码,提供大家参考学习!不用积分!不用积分!不用积分!重要事情说三遍。 如果资源对你有用,给博主一键三连鼓励一下! ...

    spring boot整合redis基础工具类以及配置文件

    以上就是Spring Boot整合Redis的基础步骤和一个简单的工具类示例。通过这种方式,你可以利用Redis的高性能特性来提高应用程序的响应速度和数据处理能力。在实际项目中,还可以考虑使用Redis的其他高级特性,如发布/...

    微服务 Spring Boot 整合Redis 秒杀 ,全局唯一ID,乐观锁解决库存超卖,Jmeter 测试 每秒千万级并发

    本项目基于微服务架构,使用Spring Boot整合Redis,实现了高效的秒杀系统,并通过全局唯一ID(UUID)和乐观锁技术来防止库存超卖问题。此外,还利用JMeter进行性能测试,确保系统能在每秒处理千万级别的并发请求。...

    spring boot+redis单机与集群.zip

    本压缩包文件包含的是关于如何在Spring Boot项目中集成和配置Redis,以及如何设置Redis的单机和集群模式的教程或示例代码。 首先,让我们详细了解一下Spring Boot集成Redis的基础知识。Spring Boot提供了自动配置的...

    Spring-Boot-Redis-Session:Spring Boot整合Redis与Session共享

    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 秒杀 ,全局唯一ID,乐观锁解决库存超卖,Jmeter 测试 每秒千万级并发

    在本项目中,我们主要探讨的是如何利用Spring Boot构建微服务架构,并整合Redis实现高效的秒杀功能。同时,为了防止库存超卖,我们将采用乐观锁策略,并通过JMeter进行性能测试,确保系统能够处理每秒千万级别的并发...

    spring boot cache 整合 redis demo (redis windows 安装包,和redis desktop管理工具)

    以上就是关于Spring Boot整合Redis实现缓存功能的基本流程。通过这种方式,我们可以在不修改原有业务逻辑的情况下,利用Redis的高效缓存能力提升应用性能。同时,配合Redis Desktop Manager,我们可以便捷地查看和...

    springboot整合redis.zip

    SpringBoot整合Redis是现代Web应用中常见的数据存储与缓存技术结合方式,它极大地简化了在SpringBoot项目中配置和使用Redis的过程。Redis是一个高性能的键值对存储系统,适用于处理大量数据,常用于缓存、消息队列、...

    spring-boot-redis.zip

    《Spring Boot整合Redis、MyBatis与MySQL:构建高效缓存与数据访问系统》 在现代Web开发中,Spring Boot以其简洁的配置和强大的功能深受开发者喜爱。在本项目"spring-boot-redis.zip"中,我们将探讨如何将Spring ...

    spring-boot-整合redis

    ### Spring Boot 整合 Redis 实现详解 #### 一、Redis 概述 Redis 是一款高性能的开源非关系型数据库,使用 C 语言编写。它将数据存储在内存中,这意味着相较于传统的磁盘存储数据库,Redis 提供了更快的数据访问...

    SpringBoot整合Redis实例

    在现代Web应用开发中,Spring Boot以其...总结来说,Spring Boot整合Redis涉及了基础配置、数据操作、集群和哨兵模式的应用,以及分布式锁和缓存等高级功能。熟练掌握这些内容,可以有效提升Web应用的性能和可靠性。

Global site tag (gtag.js) - Google Analytics