SpringBoot 開啟Redis快取及使用方法

2022-09-21 01:21:12 字數 2304 閱讀 3728

目錄

之前不是說過redis可以當作快取用嘛

現在我們就配置一下springboot使用redis的快取

為什麼用redis作快取

用redis做快取,是因為redis有著很優秀的讀寫能力,在集群下可以保證資料的高可用

1、pom.xml檔案新增依賴

2、yml檔案配置redis集群

3、編寫redisconfig配置序列化及快取配置,新增快取註解

4、編寫業務controller,新增快取註解

5、編寫啟動類

pom.xml新增依賴

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

www.cppcns.com>4.0.0

org.example

springboot_redis

1.0-snapshot

1.8>org.springframework.boot

spring-boot-starter-parent

2.1.8.release

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-data-redis

org.springframework.boot

spring-boot-starter-test

結構是ip+port

spring:

redis:

cluster:

nodes:

- 169.254.0.100:8001

- 169.254.0.100:8002

- 169.254.0.100:8003

- 169.254.0.100:8004

- 169.254.0.100:8005

- 169.254.0.100:8006

編寫redisconfig配置序列化及快取配置,新增快取註解

設定快取的bean

這裡有必要解釋一下

@restcontroller

@requestmapping("user")

public class rediscachecontroller ")

public string findword(@pathvariable string id)

}@cacheable一定要加在方法之上

value就是之前在redisconfig中定義的命名空間,也是快取儲存的空間

key就是快取儲存的key,這裡以方法名為key,但是為避免方法名重複導致的key重複,所以加入id,來避免重複

在支援spring cache的環境中,對於使用@cacpuutaspkzvheale標註的方法,spring在每次執行前都會檢查cache中是否存在相同的key的快取元素,如果存在就不再執行該方法,而是從快取中獲取結果直接進行返回,若不存在才會執行方法並將返回結果存入指定的快取中

@cacheput也可以生命乙個方法支援快取功能,與@cacheable不同的是使用@cacheput標註的方法在執行並不會去檢查快取中是否存在之前執行過的結果,而是每次都會執行該方法,並將執行結果以鍵值對的形式存入快取中。

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

當標記在乙個類上時表示其中所有的方法的執行都會觸發快取的清除操作

@cacheevict可以指定的屬性有value、key、condition、allentries和beforeinvocation。

其中value、key和condition的語義與@cacheable對應的屬性類似。即value表示清除操作是發生在哪些快取(命名空間)上的

key表示要清除的是哪個key,如未指定則會誰用預設策略生成的key,condition表示清除操作發生的條件

allentries屬性

allentries是boolean型別的,表示是否要清除快取中的所有元素,預設為false,當指定為true時,會忽略指定的key

beforeinvocation屬性

清除操作預設時在對應方法成功執行後觸發的,即方法如果因為丟擲異常而未能成功返回也不會觸發清除操作

使用beforeinvocation可以改變觸發清除操作的時間,當我們指定屬性值為true時,spring會在呼叫該方法之前清除快取中的指定元素 編寫啟動類

就是傳統的啟動類

使用postman傳送請求進行檢測

第一次的時候可以看到控制台列印

這說明方法執行了

但是第二次傳送相同請求的時候,可以看到拿到了資料,但是方法沒有執行,說明快取有用了

好了,到此結束。

springboot 開啟多個執行緒

介紹 一些介面操作可以畢竟費時,而tomact執行緒的數量又是有限的,想要提高web吞吐量可以在spring裡開啟非同步。spring預設的執行緒是有限的 反正預設的不太好之類的 需要自己手工配置個執行緒池效果會更好。configuration enableasync 開啟對非同步任務的支援 pub...

spring boot 事務開啟 logback

enabletransactionmanagement tansaction locback配置 logging pattern console info level msg n level root warn com.kaikeba.jspdemo.dao debug 高併發下產生穿透 設定預設空...

springboot開啟非同步任務

1 在啟動類裡面使用 enableasync註解開啟功能,自動掃瞄 public class 2 封裝非同步任務類,不能直接寫到controller中 async 加在類中某個方法前,代表某個方法是非同步任務,加在類前,代表類中所有任務都是非同步任務 component 交給spring容器管理,自...