Redis學習篇2:Redis在IEDA中的應用

本文繼上文開始講述了Redis在IDEA中如何應用以及集成進入spring開發環境,以及如何使用Redis客戶端。上一個文章:Redis學習篇1:初識Redisicon-default.png?t=N7T8https://blog.csdn.net/jialuosi/article/details/139057088

一、Redis在java中的客戶端

二、SpringDataRedis

三、SpringDataRedis快速入門

3.1、使用SpringDataRedis

3.2、序列化與反序列化

3.3、StringRedisTemplate


一、Redis在java中的客戶端

  • Jedis和Lettuce:這兩個主要是提供了Redis命令對應的API,方便我們操作Redis,而SpringDataRedis又對這兩種做了抽象和封裝,因此我們后期會直接以SpringDataRedis來學習。

  • Redisson:是在Redis基礎上實現了分布式的可伸縮的java數據結構,例如Map.Queue等,而且支持跨進程的同步機制:Lock.Semaphore等待,比較適合用來實現特殊的功能需求。

上述兩種是相當于原生的java客戶端,在目前大部分都是spring的開發環境下,早已不流行使用,接下來我們著重的講一下SpringDataRedis。

二、SpringDataRedis

SpringData是Spring中數據操作的模塊,包含對各種數據庫的集成,其中對Redis的集成模塊就叫做SpringDataRedis,官網地址:Spring Data Redis

  • 提供了對不同Redis客戶端的整合(Lettuce和Jedis)

  • 提供了RedisTemplate統一API來操作Redis

  • 支持Redis的發布訂閱模型

  • 支持Redis哨兵和Redis集群

  • 支持基于Lettuce的響應式編程

  • 支持基于JDK.JSON.字符串.Spring對象的數據序列化及反序列化

  • 支持基于Redis的JDKCollection實現

我們在學習篇1中曾經提到過,Redis不同于MySQL,他在不同的環境下查詢語句并不相同,之前操作String用set,get等,操作Hash用hset,hget等,但是在SpringDataRedis中提供了RedisTemplate工具類,其中封裝了各種對Redis的操作。并且將不同數據類型的操作API封裝到了不同的類型中:

關說不練沒意義,我們繼續往下看如何在項目中集成SpringDataRedis。

三、SpringDataRedis快速入門

3.1、使用SpringDataRedis

想要使用SpringDataRedis非常簡單,只需要執行以下三個使用步驟:

  • 引入spring-boot-starter-data-redis依賴

    • <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
      </dependency>
  • 在application.yml配置Redis信息

    • server:port: 8081
      spring:redis:host: 127.0.0.1port: 6379 password: 123456 #沒有則不用填lettuce:pool:max-active: 8  #最大連接max-idle: 8   #最大空閑連接min-idle: 0   #最小空閑連接max-wait: 100ms #連接等待時間
  • 注入RedisTemplate

    • @SpringBootTest
      class RedisDemoApplicationTests {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;@Testvoid testString() {// 寫入一條String數據redisTemplate.opsForValue().set("name", "jialuosi");// 獲取string數據Object name = redisTemplate.opsForValue().get("name");System.out.println(name);}
      }

3.2、序列化與反序列化

????????RedisTemplate可以接收任意Object作為值寫入Redis,只不過寫入前會把Object序列化為字節形式,默認是采用JDK序列化,得到的結果是這樣的:(值就是我們存入的name的value:jialuosi)

這種序列化的方式,其缺點已經非常的明顯:可讀性非常差,內存占用較大。所以該如何解決呢?

  • 方案一:

    • 自定義RedisTemplate

    • 修改RedisTemplate的序列化器為GenericJackson2JsonRedisSerializer

    • 缺點:為了在反序列化時知道對象的類型,JSON序列化器會將類的class類型寫入json結果中,存入Redis,會帶來額外的內存開銷。

  • 方案二:

    • 使用StringRedisTemplate

    • 寫入Redis時,手動把對象序列化為JSON

    • 讀取Redis時,手動把讀取到的JSON反序列化為對象

因為種種原因,方案一也有很多的問題,所以我們之間講解方案二、避免白雪。

3.3、StringRedisTemplate

????????為了減少內存的消耗,我們可以采用手動序列化的方式,換句話說,就是不借助默認的序列化器,而是我們自己來控制序列化的動作,同時,我們只采用String的序列化器,這樣,在存儲value時,我們就不需要在內存中就不用多存儲數據,從而節約我們的內存空間。

????????這種用法比較普遍,因此SpringDataRedis就提供了RedisTemplate的子類:StringRedisTemplate,它的key和value的序列化方式默認就是String方式。

而關于如何序列化以及反序列化可以看我的這篇文章:JAVA:淺談JSON與JSON轉換icon-default.png?t=N7T8https://blog.csdn.net/jialuosi/article/details/139005572

下面是實操代碼,其中實體類只賦值了ID以及名字,從? ?序列化為JSON數據存入Redis? ?到? ? 從Redis中取出JSON然后反序列化為實體類對象? ?的過程。?

?

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

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

相關文章

MySQL存儲過程_觸發器_游標——Baidu Comate

# 問題1&#xff1a; 幫我創建2個表student與score表&#xff0c;要求student表有id,createDate,userName,phone,age,sex,introduce, 要求score表有id,scoreName,result,studentId(student表的id外鍵)。 要求student表中插入5條學生信息&#xff0c;都要是中文的。 要求score表…

onload和onunload有什么區別(代碼舉例說明)

onload 和 onunload 是兩種常用于網頁中的事件處理器&#xff08;event handlers&#xff09;&#xff0c;但它們處理的是完全不同的頁面生命周期事件。 onload onload 事件會在頁面或指定的元素&#xff08;如圖片、框架等&#xff09;完成加載后觸發。對于頁面整體來說&…

樹莓派 Raspberry Pi M.2 HAT+ 現已發售!原理圖流出!

?Raspberry Pi M.2 HAT 使您能夠將 M.2 M-key 外設&#xff08;如 NVMe 驅動器和人工智能加速器&#xff09;連接到 Raspberry Pi 5。它能夠提供與這些外設之間的快數據傳輸&#xff08;高達 500 MB/s&#xff09;&#xff0c;現在就可以從樹莓派的授權經銷商網絡購買&#xf…

c語言:strcmp

strcmp函數是用于比較兩個字符串的庫函數&#xff0c;其功能是根據ASCII值逐一對兩個字符串進行比較。 語法&#xff1a;strcmp(str1, str2) 返回值&#xff1a; 如果str1等于str2&#xff0c;則返回0。 如果str1小于str2&#xff0c;則返回負數&#xff08;具體值取決于C…

注意力機制篇 | MSFE:即插即用的多尺度滑窗注意力(附源碼實現)

前言:Hello大家好,我是小哥談。多尺度滑窗注意力(Multi-Scale Sliding Window Attention,MSFE)是一種用于處理圖像的深度學習模型。它通過引入多尺度特征提取和滑窗注意力機制來提高圖像識別的準確性。在MSFE中,模型采用多尺度卷積神經網絡來提取圖像的特征,然后使用滑窗…

DELPHI通過WebService進行數據交互

WebService是一種可以跨語言和平臺的數據交互模式&#xff0c;使用非常廣泛&#xff0c;與JSon數據格式結合&#xff0c;更是當前非常流行的一種模式&#xff0c;本章針對DELPHI通過WebService進行數據的交互做一個相對簡單例子應用。 本文使用的DELPHI 版本為&#xff1a;DEL…

pdf文件怎么編輯?分享3個專業的pdf軟件!

在數字化時代&#xff0c;PDF文件已成為我們工作、學習中的得力助手。然而&#xff0c;面對需要修改的PDF文件&#xff0c;許多人卻感到無從下手。今天&#xff0c;就讓我們一起探索如何輕松編輯PDF文件&#xff0c;并介紹幾款實用的編輯軟件&#xff0c;讓你輕松應對各種PDF編…

創建型模式 (Python版)

單例模式 懶漢式 class SingleTon:# 類屬性_obj None # 用來存儲對象# 創造對象def __new__(cls, *args, **kwargs):# 如果對象不存在&#xff0c;就創造一個對象if cls._obj is None:cls._obj super().__new__(cls, *args, *kwargs)# 返回對象return cls._objif __name__…

OpenAI宮斗劇番外篇: “Ilya與Altman聯手對抗微軟大帝,掃除黑惡勢力”,“余華”和“莫言”犀利點評

事情是這樣的。 小編我是一個重度的智譜清言用戶&#xff0c;最近智譜清言悄悄上線了一個“劃詞引用”功能后&#xff0c;我仿佛打開了新世界的大門。我甚至用這個小功能&#xff0c;玩出來了即將為你上映的《OpenAI宮斗劇番外篇》。 3.5研究測試&#xff1a;hujiaoai.cn 4研…

@Controller和@RestController區別

一、Controller 注解&#xff1a; Controller 注解用于定義一個控制器類&#xff0c;通常配合 Spring MVC 框架使用。 控制器類負責處理用戶的 HTTP 請求&#xff0c;并將處理結果返回給客戶端。 控制器類中的方法通常通過 RequestMapping 或其衍生注解來映射特定的 URL 請求…

Python中的數據類型轉換

文章目錄 一、轉成整數形式二、轉成浮點數形式三、轉成字符串形式四、轉成列表形式五、轉成元祖形式六、json和字典轉換1.json轉字典2.字典轉json 一、轉成整數形式 使用int()方法&#xff0c;示例代碼如下&#xff1a; a 5201314 result int(a) print(result) print(type(…

藍牙Classic加密算法設計和實現,SAFER+,E0,E1,E2,E3(python)

概述 之前用python給大家實現了所有LE相關加密工具算法。bobwenstudy/BluetoothCryptographicToolbox: LE SMP加密算法設計和實現(python) (github.com)&#xff0c;最近重溫了下Classic加密&#xff0c;順便將Classic所有加密算法給實現了一遍。 在藍牙Classic Spec中&#…

5.14.3 UNETR:用于 3D 醫學圖像分割的 Transformers

具有收縮和擴展路徑的全卷積神經網絡 (FCNN) 在大多數醫學圖像分割應用中表現出了突出的作用。在 FCNN 中&#xff0c;編碼器通過學習全局和局部特征以及上下文表示來發揮不可或缺的作用&#xff0c;這些特征和上下文表示可用于解碼器的語義輸出預測。 在FCNN中&#xff0c;收縮…

對列表進行統計和計算

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Python的列表提供了內置的一些函數來實現統計、計算的功能。下面介紹幾種常用的功能。 &#xff08;1&#xff09;獲取指定元素出現的次數 使用列表…

數字水印 | 圖像標準化論文:Digital Watermarking Robust to Geometric Distortions(二)

目錄 C?變換參數的確定D?水印的影響E?可替代的標準化過程 &#x1f916;原文&#xff1a; Digital Watermarking Robust to Geometric Distortions &#x1f916;前言&#xff1a; 這是一篇 2005 年的 SCI 一區 CCF-A&#xff0c;但是網上關于它的講解貌似挺少的。文中提出…

智能車競賽指南:從零到一,駛向自動駕駛的未來

智能車競賽指南&#xff1a;從零到一&#xff0c;駛向自動駕駛的未來 一、智能車競賽概覽1.1 競賽介紹1.2 競賽分類 二、智能車開發技術基礎2.1 硬件平臺2.2 軟件開發 三、實戰案例&#xff1a;循線小車開發3.1 系統架構3.2 代碼示例 四、技術項目&#xff1a;基于ROS的視覺導航…

FedSyn: Synthetic Data Generation using Federated Learning

arxiv2022,沒找到是哪個刊物的,是沒投中嗎? 這篇是用GAN做數據生成,每個client都訓練一個生成器,加噪聲傳到server端聚合,實驗是衡量生成圖片的質量。 論文地址:arxiv code:沒找到 貢獻 提出了提出了一種新穎的方法(FedSyn ),將聯邦學習、使用 GAN的合成數據生成…

高中數學:平面向量-數量積(向量與向量的乘積)與投影

一、引題 物理上的力做功 二、數量積與投影 1、數量積 θ的范圍是[0,π] 2、投影 向量的投影&#xff0c;依然是一個向量&#xff01; 3、運算法則 易錯點&#xff1a; 4、重要性質 這里對性質(2)要注意一下&#xff1a;如果 a → \mathop{a}\limits ^{\rightarrow…

AWS安全性身份和合規性之Shield

shield&#xff1a;盾(牌);(保護機器和操作者的)護罩&#xff0c;防護屏&#xff0c;擋板;屏障;保護物;&#xff08;警察的&#xff09;盾形徽章;保護人;掩護物;盾形紋徽;盾形獎牌; AWS Shield是一項AWS托管的DDoS&#xff08;Distributed Denial of Service&#xff0c;分布式…

建模:Maya

一、常用按鍵 1、alt 左鍵 —— 環繞查看 2、alt 中鍵 —— 拖動模型所在面板 3、空格 —— 進入三視圖模式&#xff1b;空格 左鍵按住拖動 —— 切換到對應視圖 二、骨骼歸零 1、T Pose 旋轉模式&#xff0c;點擊模型&#xff0c;擺好T姿勢即可 2、復制模型設置200距離…