Spring Boot3.4.1 集成redis

Spring Boot3.4.1 集成redis

第一步 引入依賴
<!-- redis 緩存操作 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- pool 對象池 -->
<!-- 使用lettuce客戶端需要引入commons-pool2依賴 -->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.31</version>
</dependency>
第二步 引入配置
spring:# redis 配置redis:# 地址host: 127.0.0.1# 端口,默認為6379port: 6379# 密碼,沒有不填password: ''# 連接超時時間timeout: 10slettuce:pool:# 連接池中的最小空閑連接min-idle: 0# 連接池中的最大空閑連接max-idle: 8# 連接池的最大數據庫連接數max-active: 8# #連接池最大阻塞等待時間(使用負值表示沒有限制)max-wait: -1ms
第三步 編寫redis配置類
@Configuration
@EnableCaching
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory){RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(connectionFactory);template.setValueSerializer(new StringRedisSerializer());// 使用StringRedisSerializer序列化和反序列化redis的key值template.setKeySerializer(new StringRedisSerializer());// 使用StringRedisSerializer序列化和反序列化redis hash類型的key值template.setHashKeySerializer(new StringRedisSerializer());// 序列化和反序列化redis hash類型的value值template.setHashValueSerializer(new StringRedisSerializer());template.afterPropertiesSet();return template;}
}
第四步 編寫操作工具類
@Component
public class RedisUtils
{@Autowiredprivate RedisTemplate<String, Object>   redisTemplate;/**  默認過期時長,單位:秒 */public final static long                DEFAULT_EXPIRE = 60 * 60 * 24;public void set(String key, Object value){set(key, value, DEFAULT_EXPIRE);}public void set(String key, Object value, long expire){redisTemplate.opsForValue().set(key, toJson(value));redisTemplate.expire(key, expire, TimeUnit.SECONDS);}public String get(String key){return redisTemplate.opsForValue().get(key).toString();}public <T> T get(String key, Class<T> clazz){String value = redisTemplate.opsForValue().get(key).toString();return value == null ? null : fromJson(value, clazz);}public void delete(String key){redisTemplate.delete(key);}private String toJson(Object object){if (object instanceof Integer || object instanceof Long || object instanceof Float || object instanceof Double|| object instanceof Boolean || object instanceof String){return String.valueOf(object);}return JSON.toJSONString(object);}private <T> T fromJson(String json, Class<T> clazz){return JSON.parseObject(json, clazz);}
}
第五步 測試
@RestController
@RequestMapping("test")
public class TestController {@Autowiredprivate RedisUtils redisUtils;@RequestMapping("/hello")public String hello() {redisUtils.set("test1","hello world");System.out.println(redisUtils.get("test1"));return "hello";}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82898.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82898.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82898.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Replacing iptables with eBPF in Kubernetes with Cilium

source: https://archive.fosdem.org/2020/schedule/event/replacing_iptables_with_ebpf/attachments/slides/3622/export/events/attachments/replacing_iptables_with_ebpf/slides/3622/Cilium_FOSDEM_2020.pdf 使用Cilium&#xff0c;結合eBPF、Envoy、Istio和Hubble等技術…

英一真題閱讀單詞筆記 05年

2005 年 Text 1 第一段 序號 單詞 音標 詞義 1 fat [ft] a. 豐厚的&#xff0c;巨額的&#xff1b;肥胖的 2 pay [pe?] n. 薪水 3 rise [ra?z] n. 上漲&#xff0c;增加&#xff1b;斜坡 4 pleasure [ple??(r)] n. 快樂&#xff1b;樂事 5 pleasure a…

FastAPI集成APsecheduler的BackgroundScheduler+mongodb(精簡)

項目架構&#xff1a; FastAPI(folder) >app(folder) >core(folder) >models(folder) >routers(folder) >utils(folder) main.py(file) 1 utils文件夾下新建schedulers.py from apscheduler.schedulers.background import BackgroundScheduler from apschedu…

聊一聊接口測試中耗時請求如何合理安排?

目錄 一、異步處理與輪詢機制 輪詢檢查機制 二、 并行化測試執行 三、模擬與樁技術&#xff08;Mock/Stub&#xff09; 四、動態超時與重試策略 五、測試架構設計優化 分層測試策略 并行化執行 網絡優化 六、測試用例分層管理 金字塔策略 七、 緩存與數據復用 響應…

深入詳解DICOMweb:WADO與STOW-RS的技術解析與實現

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、CSDN平臺優質創作者&#xff0c;高級開發工程師&#xff0c;數學專業&#xff0c;10年以上C/C, C#, Java等多種編程語言開發經驗&#xff0c;擁有高級工程師證書&#xff1b;擅長C/C、C#等開發語言&#xff0c;熟悉Java常用開…

Splunk Validated Architecture (SVA):構建企業級可觀測性與安全的基石

Splunk Validated Architecture (SVA) 是 Splunk 官方提供的一套經過嚴格測試、性能驗證和最佳實踐指導的參考架構藍圖。它并非單一固定方案&#xff0c;而是根據企業數據規模、性能需求、高可用性目標和合規要求&#xff0c;提供一系列可落地的部署模型。SVA 的核心價值在于為…

Armv7l或樹莓派32位RPI 4B編譯faiss

pip3 install faiss-cpu當然找不到預編譯的包 手動下載 git clone https://github.com/facebookresearch/faiss.git cd faiss #能需要切換到特定版本標簽&#xff0c;例如 v1.7.1&#xff0c;這個版本Cmake 3.18可以過&#xff0c;因為apt install安裝的cmake只更新到這里&am…

C++之string的模擬實現

string 手寫C字符串類類的基本結構與成員變量一、構造函數與析構函數二、賦值運算符重載三、迭代器支持四、內存管理與擴容機制五、字符串操作函數六、運算符重載總結 手寫C字符串類 從零實現一個簡易版std::string 類的基本結構與成員變量 namespace zzh { class string { …

修改Docker鏡像源

配置文件位置&#xff1a; sudo vim /etc/docker/daemon.json Docker 或 containerd 的鏡像加速器配置&#xff0c;旨在提高從 Docker Hub 拉取鏡像的速度。 { "features": { "buildkit": true, "containerd-snapshotter": true }, …

服務器帶寬線路的區別(GIA、CN2、BGP、CMI等)

服務器帶寬線路的區別&#xff08;GIA、CN2、BGP、CMI等&#xff09; 一、BGP線路 1. 定義與技術特點 BGP&#xff08;Border Gateway Protocol&#xff0c;邊界網關協議&#xff09;是一種用于不同自治系統&#xff08;AS&#xff09;之間交換路由信息的協議&#xff0c;屬…

從0到1搭建AI繪畫模型:Stable Diffusion微調全流程避坑指南

從0到1搭建AI繪畫模型&#xff1a;Stable Diffusion微調全流程避坑指南 系統化學習人工智能網站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目錄 從0到1搭建AI繪畫模型&#xff1a;Stable Diffusion微調全流程避坑指南摘要引言一、數據集構…

VSCode + GD32F407 構建燒錄

前言 最近調試一塊 GD32F407VET6&#xff08;168Mhz&#xff0c;8Mhz晶振&#xff09; 板子時&#xff0c;踩了一些“啟動失敗”的坑。本以為是時鐘配置有誤&#xff0c;最后發現是鏈接腳本&#xff08;.ld 文件&#xff09;沒有配置好&#xff0c;導致程序根本沒能正常執行 ma…

AI繪畫提示詞:從零開始掌握Prompt Engineering的藝術

文章目錄 什么是AI繪畫提示詞&#xff1f;提示詞的基本結構主體描述場景/背景風格指定技術參數負面提示人物肖像模板風景模板 高級技巧權重調整混合風格顏色控制情緒氛圍 常見問題與解決方法手部變形問題構圖不理想風格不夠突出 提示詞示例庫科幻場景奇幻人物靜物畫 結語 在當今…

在 Linux 上安裝 Minikube:輕松搭建本地 Kubernetes 單節點集群

&#x1f525;「炎碼工坊」技術彈藥已裝填&#xff01; 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 一、Minikube 是什么&#xff1f; Minikube 是 Kubernetes 官方推出的輕量級工具&#xff0c;專為開發者設計&#xff0c;用于在本地快速搭建單節點 Kube…

day41 python圖像識別任務

目錄 一、數據預處理&#xff1a;為模型打下堅實基礎 二、模型構建&#xff1a;多層感知機的實現 三、訓練過程&#xff1a;迭代優化與性能評估 四、測試結果&#xff1a;模型性能的最終檢驗 五、總結與展望 在深度學習的旅程中&#xff0c;多層感知機&#xff08;MLP&…

JS數組 concat() 與擴展運算符的深度解析與最佳實踐

文章目錄 前言一、語法對比1. Array.prototype.concat()2. 擴展運算符&#xff08;解構賦值&#xff09; 二、性能差異&#xff08;大規模數組&#xff09;關鍵差異原因 三、適用場景建議總結 前言 最近工作中遇到了一個大規模數組合并相關的問題&#xff0c;在數據合并時有些…

一套qt c++的串口通信

實現了創建線程使用串口的功能 具備功能: 1.線程使用串口 2.定時發送隊列內容&#xff0c;防止粘包 3.沒處理接收粘包&#xff0c;根據你的需求來&#xff0c;handleReadyRead函數中&#xff0c;可以通過m_receiveBuffer來緩存接收&#xff0c;然后拆分數據來處理 源碼 seri…

設計模式-發布訂閱

文章目錄 發布訂閱概念發布訂閱 vs 監聽者例子代碼 發布訂閱概念 發布/訂閱者模式最大的特點就是實現了松耦合&#xff0c;也就是說你可以讓發布者發布消息、訂閱者接受消息&#xff0c;而不是尋找一種方式把兩個分離 的系統連接在一起。當然這種松耦合也是發布/訂閱者模式最大…

windows-cmd 如何查詢cpu、內存、磁盤的使用情況

在 Windows 中&#xff0c;您可以使用命令提示符&#xff08;CMD&#xff09;通過一些命令來查詢 CPU、內存和磁盤的使用情況。以下是常用的命令和方法&#xff1a; 1. 查詢 CPU 使用情況 使用 wmic 命令 wmic cpu get loadpercentage 這個命令會顯示當前 CPU 的使用百分比…

allWebPlugin中間件VLC專用版之截圖功能介紹

背景 VLC控件原有接口具有視頻截圖方法&#xff0c;即video對象的takeSnapshot方法&#xff0c;但是該方法返回的是一個IPicture對象&#xff0c;不適合在谷歌等現代瀏覽器上使用。因此&#xff0c;本人增加一個新的視頻截圖方法takeSnapshot2B64方法&#xff0c;直接將視頻截圖…