Redis Java 集成到 Spring Boot

Hi~!這里是奮斗的明志,很榮幸您能閱讀我的文章,誠請評論指點,歡迎歡迎 ~~
🌱🌱個人主頁:奮斗的明志
🌱🌱所屬專欄:Redis

📚本系列文章為個人學習筆記,在這里撰寫成文一為鞏固知識,二為展示我的學習過程及理解。文筆、排版拙劣,望見諒。

在這里插入圖片描述

Redis Java 集成到 Spring Boot

  • 一、使用 Spring Boot 連接 Redis 單機
    • 1.創建Spring Boot 項目
    • 2.勾選相關依賴(Dependencies)
    • 3.界面顯示
  • 二、配置 Redis 服務地址
    • 1.在 application.yml 中配置
    • 2.映射端口號
  • 三、創建 Controller 類
    • 1.創建一個 MyController
    • 2.使用 String
    • 3.使用 List
    • 4.使用 Set
    • 5.使用 Hash
    • 6.使用 ZSet
  • 四、小結

一、使用 Spring Boot 連接 Redis 單機

1.創建Spring Boot 項目

在這里插入圖片描述

2.勾選相關依賴(Dependencies)

  • NoSQL 中的 Spring Data Redis
  • 把 Web 中的 Spring Web 也勾選?下.
  • 方便寫接口進行后續測試.

在這里插入圖片描述


在這里插入圖片描述

3.界面顯示

在這里插入圖片描述

二、配置 Redis 服務地址

1.在 application.yml 中配置

spring:data:redis:host: 127.0.0.1 # 地址port: 8888 # 映射的端口號

補充:
Spring Boot 1.x 和 Spring Boot 2.x 中,spring.redis.host 用于配置 Redis 連接屬性。
Spring Boot 3.x 中,spring.redis.host 已經棄用。
從 Spring Boot 2.x 開始,引入了 spring.data.redis 作為配置 Redis 連接的方式,并且在 Spring Boot 3.x 中也可以使用 spring.data.redis 進行配置。

2.映射端口號

  • 用Shell8 進行配置,需要一個公網ip

在這里插入圖片描述

三、創建 Controller 類

1.創建一個 MyController

由于當前只是寫簡單的測試代碼, 我們就不進?分層了. 就只創建個簡單的 Controller 即可.
在這里插入圖片描述

@RestController
public class MyController {@Autowiredprivate StringRedisTemplate redisTemplate;
}

StringRedisTemplate 用來處理文本數據的
繼承于RedisTemplate
RedisTemplate 可以處理文本數據也可以處理二進制數據

在這里插入圖片描述

2.使用 String

@GetMapping("/testString")
@ResponseBody
public String testString() {//先清除之前的數據庫redisTemplate.execute((RedisConnection connection) -> {connection.flushAll();return null;});//對原生 redis 又做了進一步封裝redisTemplate.opsForValue().set("key", "111");redisTemplate.opsForValue().set("key2", "222");redisTemplate.opsForValue().set("key3", "333");String value = redisTemplate.opsForValue().get("key");System.out.println("value:" + value);return "OK";
}
  1. 該代碼片段是一個 Spring Boot 控制器方法,通過 RedisTemplate 與 Redis 進行交互,并進行一些基本的操作
  2. redisTemplate.execute((RedisConnection connection) -> { ... }):這行代碼調用了 RedisTemplateexecute 方法,執行一個 Redis 操作。具體來說,connection.flushAll() 會清空 Redis 中的所有數據(即調用 FLUSHALL 命令)。execute 方法通過 Lambda 表達式傳遞了一個 Redis 連接對象,用來執行 Redis 命令。執行完 flushAll 后,Redis 中的所有數據會被刪除。
  3. redisTemplate.opsForValue() 相當于對命令進行進一步的封裝,用它可以調用相關方法。
  • 客戶端發送請求(返回OK)表明已經成功

在這里插入圖片描述


  • 打印日志

在這里插入圖片描述


3.使用 List

@GetMapping("/testList")
@ResponseBody
public String testList() {//先清除之前的數據庫redisTemplate.execute((RedisConnection connection) -> {connection.flushAll();return null;});redisTemplate.opsForList().leftPush("key", "111");redisTemplate.opsForList().leftPush("key", "222");redisTemplate.opsForList().leftPush("key", "333");String value = redisTemplate.opsForList().leftPop("key");System.out.println("value: " + value);value = redisTemplate.opsForList().leftPop("key");System.out.println("value: " + value);value = redisTemplate.opsForList().leftPop("key");System.out.println("value: " + value);return "OK";
}
  • 客戶端發送請求(返回OK)表明已經成功

在這里插入圖片描述


  • 打印日志

在這里插入圖片描述

4.使用 Set

@GetMapping("/testSet")
@ResponseBody
public String testSet() {//先清除之前的數據庫redisTemplate.execute((RedisConnection connection) -> {connection.flushAll();return null;});redisTemplate.opsForSet().add("key", "111", "222", "333");Set<String> result = redisTemplate.opsForSet().members("key");System.out.println("result: " + result);Boolean exists = redisTemplate.opsForSet().isMember("key", "111");System.out.println("existe: " + exists);Long count = redisTemplate.opsForSet().size("key");System.out.println("count: " + count);redisTemplate.opsForSet().remove("key", "111", "222");result = redisTemplate.opsForSet().members("key");System.out.println("result: " + result);return "OK";
}
  • 客戶端發送請求(返回OK)表明已經成功

在這里插入圖片描述


  • 打印日志

在這里插入圖片描述

5.使用 Hash

@GetMapping("/testHash")
@ResponseBody
public String testHash() {//先清除之前的數據庫redisTemplate.execute((RedisConnection connection) -> {connection.flushAll();return null;});redisTemplate.opsForHash().put("key", "f1", "111");Map<String, String> map = new HashMap<>();map.put("f2", "222");map.put("f3", "333");redisTemplate.opsForHash().putAll("key", map);String value = (String) redisTemplate.opsForHash().get("key", "f1");System.out.println("value: " + value);Boolean exists = redisTemplate.opsForHash().hasKey("key", "f1");System.out.println("exists: " + exists);redisTemplate.opsForHash().delete("key", "f1", "f2");Long len = redisTemplate.opsForHash().size("key");System.out.println("len: " + len);return "OK";
}
  • 客戶端發送請求(返回OK)表明已經成功

在這里插入圖片描述


  • 打印日志

在這里插入圖片描述


6.使用 ZSet

@GetMapping("/testZSet")
@ResponseBody
public String testZSet() {//先清除之前的數據庫redisTemplate.execute((RedisConnection connection) -> {connection.flushAll();return null;});redisTemplate.opsForZSet().add("key", "zhangsan", 10);redisTemplate.opsForZSet().add("key", "lisi", 20);redisTemplate.opsForZSet().add("key", "wangwu", 30);Set<String> members = redisTemplate.opsForZSet().range("key", 0, -1);System.out.println("members: " + members);Set<ZSetOperations.TypedTuple<String>> membersWithScores = redisTemplate.opsForZSet().rangeWithScores("key", 0, -1);System.out.println("membersWithScores: " + membersWithScores);Double score = redisTemplate.opsForZSet().score("key", "zhangsan");System.out.println("score: " + score);redisTemplate.opsForZSet().remove("key", "zhangsan");Long size = redisTemplate.opsForZSet().size("key");System.out.println("size: " + size);Long rank = redisTemplate.opsForZSet().rank("key", "lisi");System.out.println("rank: " + rank);return "OK";}
  • 客戶端發送請求(返回OK)表明已經成功

在這里插入圖片描述


  • 打印日志

在這里插入圖片描述

四、小結

  • 對于 Jedis 來說, 各個方法和 Redis 的命令基本是一致的.
  • 而集成到 Spring Boot 之后, 接口上和原始 Redis命令存在部分差別, 但是使用起來也并不困難, 只要大家熟悉 Redis 的基本操作, 還是很容易可以通過方法名字理解用法的.

在這里插入圖片描述

在這里插入圖片描述

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

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

相關文章

【Syncfusion系列】Diagram 雜談 第三篇 序列化和反序列化

目錄 序列化保存C# 代碼示例&#xff0c; 方式1 &#xff1a;C# 代碼示例&#xff0c; 方式2 &#xff1a; 反序列化加載C# 代碼示例, 方式1&#xff1a;C# 代碼示例, 方式2&#xff1a; **如何序列化自定義屬性**序列化和反序列化都存在的一個問題解決方式 圖表是否已修改&…

麒麟信安推出支持信創PC的新一代云桌面方案,助力政務信創高效安全運維

12月11日&#xff0c;在第二屆國家新一代自主安全計算系統產業集群融通生態大會上&#xff0c;麒麟信安發布了支持信創PC的新一代云桌面方案&#xff0c;該方案是基于國際TCI架構實現國產PC機云化納管在國內的首次發布&#xff0c;并與銀河麒麟桌面操作系統、長城國產PC整機實現…

中國科學院2001年數據結構試題

一、單項選擇題(每空2分&#xff0c;共20分) 1&#xff0e;下列函數中漸近時間復雜度最小的是( )。 A&#xff0e;T1(n)nlog2n5000n B&#xff0e;T2(n)n2-8000n C&#xff0e;T3(n)nlog221-6000n D&#xff0e;T4(n)2nlog2n-7000n 2&#xff0e;線性表的靜態鏈表存儲結構與順序…

MySQL數據表記錄刪操作

刪除操作&#xff1a;作用刪除表里的記錄行&#xff08;都是整行整行的刪除的&#xff09; 1.單表的刪除 語法 delete from 表名 where 要刪除的記錄篩選條件; 案例&#xff1a;刪除員工編號大于203的員工信息 delete from employees where employee_id>203; 2.多表的刪除…

網絡原理04

可靠傳輸&#xff0c;是TCP最核心的特性 可靠傳輸不是說數據100%傳輸給接收方了 1&#xff09;發送方發出數據后&#xff0c;能過知道接收方是否收到數據 2&#xff09;一旦發現對方沒收到&#xff0c;可以通過一定的方法”補救” 1. 確認應答 發送方&#xff0c;把數據已…

微信小程序5-圖片實現點擊動作和動態加載同類數據

搜索 微信小程序 “動物覓蹤” 觀看效果 感謝閱讀&#xff0c;初學小白&#xff0c;有錯指正。 一、功能描述 a. 原本想通過按鈕加載背景圖片&#xff0c;來實現一個可以點擊的搜索button&#xff0c;但是遇到兩個難點&#xff0c;一是按鈕大小調整不方便&#xff08;網上搜索…

Java里局部變量和成員變量的隱式初始化

注&#xff1a;本文是對另一篇文檔&#xff08; https://blog.csdn.net/duke_ding2/article/details/142365872 &#xff09;的補充。 文章目錄 環境初始化局部變量&#xff08;棧&#xff09;成員變量&#xff08;堆&#xff09;其它數組 分析安全性性能成員變量 VS. 局部變量…

孚盟云 MailAjax.ashx SQL注入漏洞復現

0x01 產品簡介 上海孚盟軟件有限公司是一家外貿SaaS服務提供商,也是專業的外貿行業解決方案專業提供商。 全新的孚盟云產品,讓用戶可以用云模式實現信息化管理,讓用戶的異地辦公更加流暢,大大降低中小企業在信息化上成本,用最小的投入享受大型企業級別的信息化服務,主要…

“切片賦值”創建列表批量操作“新”方法(Python)

[start:end]切片賦值&#xff0c;擴展了list批量增減元素的操作能力。 (筆記模板由python腳本于2024年12月06日 15:07:56創建&#xff0c;本篇筆記適合研python基礎的coder翻閱) 【學習的細節是歡悅的歷程】 Python 官網&#xff1a;https://www.python.org/ Free&#xff1a;…

LabVIEW實現GPS通信

目錄 1、GPS通信原理 2、硬件環境部署 3、程序架構 4、前面板設計 5、程序框圖設計 6、測試驗證 本專欄以LabVIEW為開發平臺,講解物聯網通信組網原理與開發方法,覆蓋RS232、TCP、MQTT、藍牙、Wi-Fi、NB-IoT等協議。 結合實際案例,展示如何利用LabVIEW和常用模塊實現物聯網系…

Java簡介:打開通往變成世界的大門

Java是什么&#xff1f;為什么它是全球開發者廣泛使用的語言&#xff1f;本篇文章介紹Java的特點、應用場景以及“寫一次&#xff0c;隨處運行”的核心特性&#xff0c;讓零基礎的你建立對Java語言的初步認知。 注&#xff1a;此文章可以僅作了解&#xff0c;不影響之后的學習。…

Unraid實現相冊同步與展示的方案探討

背景&#xff1a;Unraid作為一個NAS系統&#xff0c;能夠實現基本的NAS文件管理功能&#xff0c;但是不提供額外的功能如影音、同步、辦公、和內網穿透等&#xff0c;這些在其他的NAS產品如群暉、綠聯、威聯通等都是提供支持的。然而unraid也有其他方案&#xff0c;即通過特別方…

常見的網絡攻擊手段

IP 欺騙 IP 是什么? 在網絡中&#xff0c;所有的設備都會分配一個地址。這個地址就仿佛小藍的家地址「多少號多少室」&#xff0c;這個號就是分配給整個子網的&#xff0c;「室」對應的號碼即分配給子網中計算機的&#xff0c;這就是網絡中的地址。「號」對應的號碼為網絡號…

積分形式的輻射傳輸方程

The Equation of Transfer in Integral Form Let L L L be the streaming-collision operator, and S S S is scattering operator, we have L I Ω ? ? I ( r , Ω ) σ ( r , Ω ) I ( r , Ω ) LI\Omega\cdot\nabla I(r,\Omega)\sigma(r,\Omega)I(r,\Omega) LIΩ??…

JS中reduce方法

JavaScript 中的 reduce 方法是一個非常強大的數組方法&#xff0c;它允許你對數組中的所有元素執行一個“reducer”函數&#xff0c;從而將數組“減少”到一個單一的值。以下是 reduce 方法的詳細介紹&#xff1a; 語法 array.reduce(function(accumulator, currentValue, c…

印閃網絡:阿里云數據庫MongoDB版助力金融科技出海企業降本增效

客戶背景 上海印閃網絡科技有限公司&#xff0c;于2017年1月成立&#xff0c;投資方包括紅杉資本等多家國際知名風投公司。公司業務聚焦東南亞普惠金融&#xff0c;常年穩居行業頭部。創始團隊來自騰訊&#xff0c;中國團隊主要由運營、風控及產研人員組成&#xff0c;核心成員…

【后端面試總結】HTTPS工作原理詳解

引言 在現代網絡通信中&#xff0c;數據的安全性至關重要。HTTP&#xff08;Hypertext Transfer Protocol&#xff09;作為互聯網上傳輸數據的協議&#xff0c;雖然應用廣泛&#xff0c;但其數據以明文形式傳輸&#xff0c;存在被竊取和篡改的風險。為此&#xff0c;HTTPS&…

51c嵌入式~單片機~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、不同的電平信號的MCU怎么通信&#xff1f; 下面這個“電平轉換”電路&#xff0c;理解后令人心情愉快。電路設計其實也可以很有趣。 先說一說這個電路的用途&#xff1a;當兩個MCU在不同的工作電壓下工作&a…

Java 基礎知識——part 1

1.目前Java平臺有三種版本&#xff1a; Java SE&#xff1a;用于開發桌面應用程序 Java EE&#xff1a;用于編寫企業級應用程序 Java ME&#xff1a;用于開發設備應用程序 2.Applet可嵌入Web文檔的一種小型程序&#xff0c;因網絡傳輸速度關系都很短小 3.Appilication&…

【云計算】虛擬化技術

目錄 1. 虛擬化技術在云計算中的那些地方發揮了關鍵作用&#xff1f; 2. 比較VMare&#xff0c;Xen等虛擬化產品的關鍵技術&#xff0c;以及對云計算技術提供的支持&#xff1f; 3. 服務器虛擬化&#xff0c;存儲虛擬化和網絡虛擬化都有哪些實現方式&#xff1f; 4. 討論桌面…