SpringBoot集成Redis用法筆記

? ? ? ?? ? ? ? ?

今天給大家整理一下SpringBoot集成Redis用法筆記,希望對大家能有所幫助!

? ? ? ? ? ? ? ?

一、Redis優點介紹

1、速度快

不需要等待磁盤的IO,在內存之間進行的數據存儲和查詢,速度非常快。當然,緩存的數據總量不能太大,因為受到物理內存空間大小的限制。

2、支持多種數據庫類型

豐富的數據結構 除了string之外,還有list、hash、set、sortedset,一共五種類型。

3、單線程數據庫

單線程,避免了線程切換和鎖機制的性能消耗。

4、可持久化

支持RDB與AOF兩種方式,將內存中的數據寫入外部的物理存儲設備。

5、支持發布/訂閱。

6、支持Lua腳本。

7、支持分布式鎖

在分布式系統中,如果不同的節點需要訪同到一個資源,往往需要通過互斥機制來防止彼此干擾,并且保證數據的一致性。在這種情況下,需要使用到分布式鎖。分布式鎖和Java的鎖用于實現不同線程之間的同步訪問,原理上是類似的。

8、支持原子操作和事務Redis事務是一組命令的集合。

一個事務中的命令要么都執行,要么都不執行。如果命令在運行期間出現錯誤,不會自動回滾。

9、支持主從復制

支持主-從(Master-Slave)復制與高可用(Redis Sentinel)集群(3.0版本以上)

10、支持管道模式

支持管道Redis管道是指客戶端可以將多個命令一次性發送到服務器,然后由服務器一次性返回所有結果。管道技術的優點是:在批量執行命令的應用場景中,可以大大減少網絡傳輸的開銷,提高性能。

11、支持多種編程語言

二、示例

1、下載redis

大家可以在官網下載 :https://redis.io/ ,有需要的話也可以留言直接發給大家。

然后啟動redis。

2、引入依賴 pom.xml

<!--redis依賴配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

3、增加配置

redis:host: localhostdatabase: 0  port: 6379  password:jedis:pool:max-active: 8      max-wait: -1msmax-idle: 8      min-idle: 0  timeout: 3000ms

4、示例代碼

package my.springboot.redis;
import my.springboot.redis.entity.UserDO;import my.springboot.redis.service.IUserInfoService;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.redis.core.*;import org.springframework.test.context.junit4.SpringRunner;
import java.util.*;import java.util.concurrent.TimeUnit;/** * 測試UserInfo用法 **/@RunWith(SpringRunner.class)@SpringBootTestpublic class RedisTest {@Autowiredprivate RedisTemplate redisTemplate;/*ValueOperations:簡單K - V操作    SetOperations:set類型數據操作    ZSetOperations:zset類型數據操作    HashOperations:針對map類型的數據操作    ListOperations:針對list類型的數據操作*/
@Testpublic void redisStrTest() {        ValueOperations<String,Object> valueOperations = redisTemplate.opsForValue();        valueOperations.set("name1","小明");        valueOperations.set("name2","小李");System.out.println("刪除前:"+valueOperations.get("name1"));redisTemplate.delete("name1");//設置name1 60秒 過期        redisTemplate.expire("name1",60, TimeUnit.SECONDS);        System.out.println("刪除后:"+valueOperations.get("name1"));        UserDO user= new UserDO();        user.setId(1);        user.setUserName("小明");        user.setPassword("123456");        valueOperations.set("user",user);        UserDO user1=  (UserDO) valueOperations.get("user");}@Testpublic void redisListTest() {ListOperations<String,List<String>> listOperations=redisTemplate.opsForList();        List<String> list=new ArrayList<>();        list.add("籃球");        list.add("足球");        listOperations.leftPushAll("list:str",list);        List<String> ll=listOperations.range("list:str",0,-1).get(0);long size= listOperations.size("list:str");for (String item: ll ) {            System.out.println(item);        }// 移除操作        redisTemplate.delete("list:str");        List<String> aa=listOperations.leftPop("list:str");        System.out.println(listOperations.leftPop("list:str"));    }@Testpublic void redisHashTest() {        HashOperations<String,Object,UserDO> hashOperations = redisTemplate.opsForHash();        UserDO user= new UserDO();        user.setId(1);        user.setUserName("小明");        user.setPassword("123456");        hashOperations.put("user:hash",user.hashCode()+"",user);        System.out.println(hashOperations.get("user:hash",user.hashCode()+"").getUserName());    }@Testpublic void redisSettTest() {        SetOperations<String,UserDO> sortOperations = redisTemplate.opsForSet();        UserDO user= new UserDO();        user.setId(1);        user.setUserName("小明");        user.setPassword("123456");UserDO user1= new UserDO();        user1.setId(2);        user1.setUserName("小張");        user1.setPassword("888888");        sortOperations.add("user:sort",user,user1);        Set<UserDO> result = sortOperations.members("user:sort");for (UserDO item : result ) {            System.out.println(item.getUserName());}redisTemplate.delete("user:sort");        System.out.println(result);    }
@Testpublic void redisZSetTest() {redisTemplate.delete("ranking-list");        ZSetOperations<String,String> zsortOperations = redisTemplate.opsForZSet();//向集合中插入元素,并設置分數        zsortOperations.add("ranking-list", "小明", 80);//向集合中插入多個元素        DefaultTypedTuple<String> tuple1 = new DefaultTypedTuple<String>("小王", 100.0);        DefaultTypedTuple<String> tuple2 = new DefaultTypedTuple<String>("小張", 90.0);        zsortOperations.add("ranking-list", new HashSet<>(Arrays.asList(tuple1, tuple2)));System.out.println(zsortOperations.range("ranking-list",0,-1));}
}IT技術分享社區
個人博客網站:https://programmerblog.xyz文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

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

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

相關文章

tomcat和servlet的關系

tomcat和servlet的關系 Tomcat 是Web應用服務器,是一個Servlet/JSP容器. Tomcat 作為Servlet容器,負責處理客戶請求,把請求傳送給Servlet,并將Servlet的響應傳送回給客戶.而Servlet是一種運行在支持Java語言的服務器上的組件. Servlet最常見的用途是擴展Java Web服務器功能,提…

Linux常用遠程連接工具介紹,總有一款適合你

目錄 1、xshell 2、winscp 3、PuTTY 4、MobaXterm 5、FinalShell 今天給大家推薦Linux常用遠程連接工具&#xff0c;希望對大家能有所幫助&#xff01; 1、xshell 介紹&#xff1a; xshell是一個非常強大的安全終端模擬軟件&#xff0c;它支持SSH1, SSH2, 以及Windows平臺的TEL…

python高性能寫法_py 高性能低級,高級寫法思考

這里所謂的低級&#xff0c;高級是指封裝抽象的程度。低級指os.fork()高級是指 multiprocessing包一般根據業務需求&#xff0c;一個主進程負責維護接收&#xff0c; 不同的子進程處理不同的需求。根據各同需求組合多進程多線程多進程&#xff0b;多線程協程也可基于uvloop事件…

Linux遠程管理協議相關知識介紹

一、什么是遠程管理遠程管理&#xff0c;實際上就是計算機&#xff08;服務器&#xff09;之間通過網絡進行數據傳輸&#xff08;信息交換&#xff09;的過程&#xff0c;與瀏覽器需要 HTTP 協議&#xff08;超文本傳輸協議&#xff09;瀏覽網頁一樣&#xff0c;遠程管理同樣需…

使用ArcGIS JavaScript API 3.18 加載天地圖

對于中國開發者在創建GIS應用的時候&#xff0c;往往比較頭疼的是底圖資源的缺乏。其實國家測繪地信局就提供一個很好的免費資源&#xff1a;天地圖。使用ArcGIS API的開發人員可以直接利用該資源作為地圖應用的底圖。 ArcGIS JavaScript API最近新推出了3.18版本。所以下面示例…

潛力的監控mysql_Grafana 數據庫監控平臺

Grafana 數據庫監控平臺簡介Grafanademo 地址&#xff1a;官方demo文檔可以下載pdf離線閱讀Percona監控和管理(PMM)是一個用于管理和監控MySQL和MongoDB性能的開源平臺。它由Percona與托管數據庫服務&#xff0c;支持和咨詢領域的專家合作開發。PMM是一種免費的開源解決方案&am…

PC軟件:推薦七款Windows下寶藏軟件

目錄 一、uTools 效率神器 二、Groupy 窗口切換神器 三、Revo Uninstaller 卸載神器 四、Universal Viewer 五、VectorMagic 六、QuickLook 文件預覽神器 七、Bandizip 壓縮神器 今天給大家推薦七款Windows下軟件&#xff0c;每一個都值得擁有。 一、uTools 效率神器 一個可以幫…

職坐標 MySQL視頻_測試工具之MySQLSlap使用實例

myisam摘要&#xff1a; 一、Mysqlslap介紹   mysqlslap是MySQL5.1之后自帶的benchmark基準測試工具&#xff0c;類似Apache Bench負載產生工具&#xff0c;生成schema&#xff0c;裝載數據&#xff0c;執行benckmark和查詢數據&#xff0c;語法簡單&#xff0c;靈活&#xf…

Linux計劃任務(at,crontab)

在LINUX中&#xff0c;我們通過crontab和at這兩個東西來實現 at&#xff1a;它是一個可以處理僅執行一次就結束的指令 crontab&#xff1a;它是會把你指定的工作或任務&#xff0c;比如&#xff1a;腳本等&#xff0c;按照你設定的周期一直循環執行下去 1.at計劃任務的使用 語…

硬件:筆記本電腦7大分類總結,看完你就明白了

目錄 游戲本 超極本 輕薄本 學生本 商務本 二合一電腦 上網本 今天給大家分享筆記本電腦7大場景分類&#xff0c;看完你就明白了&#xff01; 游戲本 游戲本最早由外星人和微星推出&#xff0c;在90年代就引起了眾多游戲玩家的熱捧。目前游戲本在筆記本電腦市場可謂是超級火爆&…

數字反轉

3.數字反轉 Description&#xff1a; 給定一個整數&#xff0c;請將該數各個位上數字反轉得到一個新數。新數也應滿足整數的常見形式&#xff0c;即除非給定的原數為零&#xff0c;否則反轉后得到的新數的最高位數字不應為零&#xff08;參見樣例2&#xff09;。 Input&#xf…

網路知識:為什么寬帶越用越慢,看完你就明白了

目錄 一、辦理寬帶的時候要問清楚寬帶是不是獨享的&#xff01; 二、定期重啟路由器 三、定期檢修寬帶線路 四、出口光貓或路由器的問題 每個家庭都有安裝寬帶&#xff0c;但是仍然有不少人不知道寬帶的基本常識&#xff0c;今天和大家一起來聊一聊。 首先寬帶&#xff0c;是一…

設計模式---------門面模式

1.概念 提供一個統一的接口去訪問多個子系統的多個不同的接口&#xff0c;它為子系統中的一組接口提供一個統一的高層接口。使用子系統更容易使用。 本質&#xff1a;就是化零為整&#xff1b;引入一個中介類&#xff0c;把各個分散的功能組合成一個整體&#xff0c;只對外暴…

java delphi aes加密算法_Delphi AES,又一個加密算法例子

/////AES DEMO V1.0////作者&#xff1a;ksaiy////歡迎使用由ksaiy制作的AES加密算法演示程序&#xff0c;此算法為標準的AES算法&#xff0c;你可以根據的//的自己需要進行變形。具體怎么操作可以登錄我們的網站查詢詳細的資料。我們專門為軟//件開發者提供軟件加密安全測試服…

電腦技巧:推薦五款超級好用的電腦小眾軟件

目錄 1、HoneyView 看圖神器 2、PeaZip 壓縮軟件 3、Sandbox 沙盤工具 4、Seer 預覽神器 5、flux 護眼神器 今天給大家推薦五款超級好用的電腦小眾軟件&#xff0c;希望對大家能夠有所幫助&#xff01; 1、HoneyView 看圖神器 HoneyView 看圖軟件&#xff0c;打開速度非常快&am…

java math round小數_Java——Math的round方法

代碼如下&#xff0c;后面的注釋是輸出的結果public static voidmain(String[] args) {System.out.println(Math.round(0.399));//0System.out.println(Math.round(0.4));//0System.out.println(Math.round(0.41));//0System.out.println(Math.round(0.499));//0System.out.pri…

電腦軟件:9款超級實用的辦公軟件

目錄 一、Quicker 二、Eagle 三、FSCapture 四、圖說 五、Lively Wallpaper 六、愛奇藝萬能聯播 七、Fliqlo 八、Folder Painter 九、7Zip 今天給大家分享9款超級實用的辦公軟件&#xff0c;值得收藏&#xff01; 一、Quicker 作為全網好評的這款國產軟件&#xff0c;可以秒殺很…