我的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是否已經按照我們自定義規則生成!