日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

springboot切換為redis緩存

作者:CAUC_lin 更新時間: 2022-08-15 編程語言

前言

  • SpringBoot默認開啟的緩存管理器是ConcurrentMapCacheManager,創建的緩存實際上是ConcurrentMapCache,將緩存數據保存在ConcurrentHashMap中
  • 可以自由加入緩存中間件,如redis、memcache、enchache等,當導入jar包時,springboot會自動導入相關的bean,此時使用緩存注解即可將數據存入redis中。

步驟:

  1. 安裝redis,開啟redis。

在這里插入圖片描述

我是在虛擬機上安裝的redis,所以需要注意配置文件中的位置和端口,以及是否設置了密碼等問題,還需要關閉防火墻,否則可能產生連接不上redis的問題。注意:端口號前面的ip應該為*號顯示。如果你是在win上安裝,直接開啟即可。

redis.config中的注意事項

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

取消防火墻指令:

systemctl stop firewalld(默認)
systemctl disable firewalld.service(設置開啟不啟動)

連接redis成功

在這里插入圖片描述

  1. 添加pom依賴

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
    
  2. 在application.properties中配置redis地址

    spring.redis.host=此處輸入你的redis地址
    
  3. 此時已經啟動了redis緩存,可以使用了,需要在service上添加對應的@Cachable等注解以及在核心啟動類上添加@EnableCaching注解,詳細請查看上一篇springboot緩存使用
    springboot緩存使用 。但為了方便查看,需要自定義RedisCacheManager,將對象序列化的方式由jdk變為json。

@Configuration
public class RedisConfig {

    @Bean
    public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
        // 分別創建String和JSON格式序列化對象,對緩存數據key和value進行轉換
        RedisSerializer<String> strSerializer = new StringRedisSerializer();
        Jackson2JsonRedisSerializer jacksonSeial =
                new Jackson2JsonRedisSerializer(Object.class);
        // 解決查詢緩存轉換異常的問題
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jacksonSeial.setObjectMapper(om);
        // 定制緩存數據序列化方式及時效
        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
                .entryTtl(Duration.ofDays(1))
                .serializeKeysWith(RedisSerializationContext.SerializationPair
                        .fromSerializer(strSerializer))
                .serializeValuesWith(RedisSerializationContext.SerializationPair
                        .fromSerializer(jacksonSeial))
                .disableCachingNullValues();
        RedisCacheManager cacheManager = RedisCacheManager
                .builder(redisConnectionFactory).cacheDefaults(config).build();
        return cacheManager;
    }

}
  1. 測試:

    • 查詢后,執行了查詢數據庫的操作,并且將查詢結果存入了redis中,并且結果顯示為json格式

在這里插入圖片描述

在這里插入圖片描述

  • 第二次查詢直接從redis中獲取,不再執行sql語句。

總結:

  • 啟動redis,導入redis的jar包并配置好地址即可在springboot中使用redis緩存
  • 注意自定義配置類將序列化的方式由jdk改為json

原文鏈接:https://blog.csdn.net/CAUC_lin/article/details/126329438

欄目分類
最近更新