1. 程式人生 > >我的springboot學習之使用Redis作為專案資料快取

我的springboot學習之使用Redis作為專案資料快取

小可愛以前總聽大佬說,“redis快取”,可是自己卻沒有用過,查閱了一下資料,原來是這麼回事~

實踐過程記錄一下,作為springboot學習小本本的一篇~

第一步:下載Windows版本Redis

小可愛的大佬和小可愛說,

第一個是安裝程式方式,可以直接安裝,

第二個則是壓縮包的形式,解壓完就可以用,

第三、四個都是原始碼檔案

這個嘛,小可愛肯定選壓縮包,都不用安裝,多省事兒啊~

第二步:開啟Redis

(PS:cmd輸入命令:netstat -ano,可以列出所有埠的情況。

解壓完成後小可愛來開啟Redis資料庫,Redis資料庫的預設埠是6379

如果已經被其他應用程式佔用,請自行修改redis.windows.conf配置檔案

如果沒有埠沒有被佔用,就需要小可愛在cmd命令視窗執行執行Redis,

做法是小可愛首先使用cmd命令進入到Redis解壓目錄,

並且執行redis-server.exe redis.windows.conf命令即可,

如下圖所示:

可以看到上圖,就證明小可愛的redis資料庫已經啟動了,

下面輸出日誌開啟了服務連結在6379埠~

好了小可愛的資料庫已經配置完成了,接下來小可愛來構建springboot整合Redis專案~

第三步:新增依賴

在專案pom.xml中新增對應的redis快取依賴maven配置

   <!-- 新增快取支援 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>
        <!-- 新增Redis快取支援 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-redis</artifactId>
            <version>1.4.3.RELEASE</version>
        </dependency>

小可愛在這裡說一句,

新增快取的支援需要兩個依賴,

一個是springboot內部的快取配置、另外則是我們的redis快取

第四步:配置Redis資料庫

依賴新增完成後,需要配置小可愛本地的redis資料庫連線到專案中,

開啟application.yml配置檔案,配置以下內容:

#配置redis資料庫連線
  redis:
    host: 127.0.0.1
    port: 6379
    pool:
      max-idle: 20
      min-idle: 1
      max-active: 20
      max-wait: 60000

第五步:配置CacheManager

小可愛需要讓springboot內建的快取框架使用我們的Redis作為新的快取,

這個時候,小可愛來新增一個RedisConfiguration的配置類,並新增對應的配置如下所示:

import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.core.RedisTemplate;
 /**
     * 採用RedisCacheManager作為快取管理器
     * @param redisTemplate
     * @return
     */
    @Bean
    public CacheManager cacheManager(RedisTemplate redisTemplate) {

        return new RedisCacheManager(redisTemplate);
    }

小可愛使用@EnableCaching註解來開啟我們的專案支援快取,我們在配置類內添加了方法cacheManager(),方法的返回值則是使用了我們的Redis快取的管理器,SpringBoot專案啟動時就會去找自定義配置的CacheManager物件並且自動應用到專案中。

第六步:驗證redis快取

執行專案並檢視控制檯輸出的日誌是否存在異常,啟動成功後訪問地址:127.0.0.1:8080/list

成功顯示頁面,檢視下控制檯

當小可愛再次請求頁面列表,意外地發現了...

同樣是可以訪問到資料的,而且跟上次訪問列表的資料一致,

並且執行了JPA自動生成的SQL,怎麼樣都僅僅只是執行一次

證明小可愛成功了,哈哈哈...(๑・ิ-・ิ๑)

現在小可愛,再來通過redis-cli客戶端檢視下資料庫內儲存的key

是不是感覺Redis自動生成的Key,讓我們很無奈,因為小可愛根本看不懂!

附加步驟:自定義Key

開啟RedisConfiguration配置類,新增繼承CachingConfigurerSupport類,並重寫方法keyGenerator()

根據類名、方法名、引數列表等完成自定義Redis快取的Key定義

  @Override
    public KeyGenerator keyGenerator() {
        return new KeyGenerator() {
            @Override
            public Object generate(Object o, Method method, Object... objects) {
                //格式化快取key字串
                StringBuilder sb = new StringBuilder();
                //追加類名
                sb.append(o.getClass().getName());
                //追加方法名
                sb.append(method.getName());
                //遍歷引數並且追加
                for (Object obj : objects) {
                    sb.append(obj.toString());
                }
                System.out.println("呼叫Redis快取Key : " + sb.toString());
                return sb.toString();
            }
        };
    }

噢耶,資料庫內儲存的key是否已經按照我們自定義規則生成!