Spring整合Redis快取,提高查詢效率

2021-09-08 05:08:41 字數 2726 閱讀 5187

整合redis快取後可以將資料庫的查詢介面,序列化到redis中,key就是註解中的引數,例如@cacheable(「findusers」): 存在redis中的key就是findusers。快取了這個結果之後再次請求這個方法就不會去資料庫中查,而是從redis快取中讀取資料,這樣就減少了跟資料庫之間的互動。然後修改、刪除、增加操作就會清除快取,保持資料的一致性,同時有極大的提高了程式執行的效率

1.引入依賴包檔案

org.springframework.data

spring-data-redis

1.7.4.release

redis.clients

jedis

2.9.0

2.建立redis.properties檔案

#*************************===#

#==== redis settings ====#

#*************************===#

#redis 伺服器 ip

redis.host=127.0.0.1

#redis 伺服器端口

redis.port=6380

#redis 密碼

redis.pass=123456

#redis 支援16個資料庫(相當於不同使用者)可以使不同的應用程式資料彼此分開同時又儲存在相同的例項上

redis.dbindex=0

#redis 快取資料過期時間單位秒

redis.expiration=3000

#控制乙個 pool 最多有多少個狀態為 idle 的jedis例項

redis.maxidle=300

#控制乙個 pool 可分配多少個jedis例項

redis.maxactive=600

#當borrow乙個jedis例項時,最大的等待時間,如果超過等待時間,則直接丟擲jedisconnectionexception;

redis.maxwait=1000

#在borrow乙個jedis例項時,是否提前進行alidate操作;如果為true,則得到的jedis例項均是可用的;

redis.testonborrow=true

3.建立redis-context檔案

<?xml version="1.0" encoding="utf-8"?>

4.redis快取配置類,會在redis-context配置檔案中註冊這個bean。

/**

* @author: chuan.bai

* @description

* 該配置類繼承自 org.springframework.cache.annotation.cachingconfigurersupport

* 並實現 org.springframework.cache.annotation.cachingconfigurer 的方法。

* 通俗一點,該類告訴 spring 當前使用的快取服務為 redis 並自定義了快取 key 生成的規則

* @date: created on 14:45 27/01/2018

* @modified by:

*//**

* 通過spring管理redis快取配置

*/@configuration

@enablecaching

public class rediscacheconfig extends cachingconfigurersupport

public rediscacheconfig(jedisconnectionfactory mjedisconnectionfactory, redistemplatemredistemplate, rediscachemanager mrediscachemanager)

public jedisconnectionfactory redisconnectionfactory()

public redistemplateredistemplate(redisconnectionfactory cf)

public cachemanager cachemanager(redistemplate<?, ?> redistemplate)

@bean

public keygenerator keygenerator()

return sb.tostring();}};

}}

在需要快取的方法上面新增相應注釋

@cacheable  spring 會在其被呼叫後將返回值快取起來,以保證下次利用同樣的引數來執行該方法時可以直接從快取中獲取結果,而不需要再次執行該方法。

@cacheput 標註的方法在執行前不會去檢查快取中是否存在之前執行過的結果,而是每次都會執行該方法,並將執行結果以鍵值對的形式存入指定的快取中。

@cacheevict 用來標註在需要清除快取元素的方法或類上的。

例如:

@cacheable(value = "getalluser")  :標註該方法查詢的結果進入快取,再次訪問時直接讀取快取中的資料

@cacheevict(value= ,allentries=true)//清空快取,allentries變數表示所有物件的快取都清除

一般在對資料做修改嗎,刪除的方法中,會插入該註解,防止redis資料和mysql不同步

springBoot上整合redis快取

1.pom.xml引入jar包,如下 org.springframework.bootgroupid spring boot starter data redisartifactid dependency 2.修改專案啟動類,增加註解 enablecaching,開啟快取功能,如下 package ...

springboot整合redis快取一些知識點

二 config配置類 三 快取註解使用 最近在做智慧型家居平台,考慮到家居的控制需要快速的響應於是打算使用redis快取。一方面減少資料庫壓力另一方面又能提高響應速度。專案中使用的技術棧基本上都是大家熟悉的springboot全家桶,在springboot2.x以後操作redis的客戶端推薦使用l...

Springboot整合Redis做快取

redis安裝參考 redis安裝 linux修改redis配置檔案及防火牆的更改參考 linux防火牆更改 redis配置檔案修改 在專案中引入redis的包 org.springframework.boot groupid spring boot starter data redis artif...