成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringBoot集成Redis用法筆記

存儲(chǔ) 存儲(chǔ)軟件 Redis
今天給大家整理一下SpringBoot集成Redis用法筆記,希望對(duì)大家能有所幫助!不需要等待磁盤(pán)的IO,在內(nèi)存之間進(jìn)行的數(shù)據(jù)存儲(chǔ)和查詢(xún),速度非常快。當(dāng)然,緩存的數(shù)據(jù)總量不能太大,因?yàn)槭艿轿锢韮?nèi)存空間大小的限制。

[[410540]]

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

一、Redis優(yōu)點(diǎn)介紹

1、速度快

不需要等待磁盤(pán)的IO,在內(nèi)存之間進(jìn)行的數(shù)據(jù)存儲(chǔ)和查詢(xún),速度非常快。當(dāng)然,緩存的數(shù)據(jù)總量不能太大,因?yàn)槭艿轿锢韮?nèi)存空間大小的限制。

2、支持多種數(shù)據(jù)庫(kù)類(lèi)型

豐富的數(shù)據(jù)結(jié)構(gòu) 除了string之外,還有l(wèi)ist、hash、set、sortedset,一共五種類(lèi)型。

3、單線(xiàn)程數(shù)據(jù)庫(kù)

單線(xiàn)程,避免了線(xiàn)程切換和鎖機(jī)制的性能消耗。

4、可持久化

支持RDB與AOF兩種方式,將內(nèi)存中的數(shù)據(jù)寫(xiě)入外部的物理存儲(chǔ)設(shè)備。

5、支持發(fā)布/訂閱。

6、支持Lua腳本。

7、支持分布式鎖

在分布式系統(tǒng)中,如果不同的節(jié)點(diǎn)需要訪(fǎng)同到一個(gè)資源,往往需要通過(guò)互斥機(jī)制來(lái)防止彼此干擾,并且保證數(shù)據(jù)的一致性。在這種情況下,需要使用到分布式鎖。分布式鎖和Java的鎖用于實(shí)現(xiàn)不同線(xiàn)程之間的同步訪(fǎng)問(wèn),原理上是類(lèi)似的。

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

一個(gè)事務(wù)中的命令要么都執(zhí)行,要么都不執(zhí)行。如果命令在運(yùn)行期間出現(xiàn)錯(cuò)誤,不會(huì)自動(dòng)回滾。

9、支持主從復(fù)制

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

10、支持管道模式

支持管道Redis管道是指客戶(hù)端可以將多個(gè)命令一次性發(fā)送到服務(wù)器,然后由服務(wù)器一次性返回所有結(jié)果。管道技術(shù)的優(yōu)點(diǎn)是:在批量執(zhí)行命令的應(yīng)用場(chǎng)景中,可以大大減少網(wǎng)絡(luò)傳輸?shù)拈_(kāi)銷(xiāo),提高性能。

11、支持多種編程語(yǔ)言

二、示例

1、下載redis

大家可以在官網(wǎng)下載 :https://redis.io/ ,有需要的話(huà)也可以留言直接發(fā)給大家。

然后啟動(dòng)redis。

2、引入依賴(lài) pom.xml

  1. <!--redis依賴(lài)配置--> 
  2. <dependency> 
  3. <groupId>org.springframework.boot</groupId> 
  4. <artifactId>spring-boot-starter-data-redis</artifactId> 
  5. </dependency> 

 

3、增加配置

  1. redis: 
  2. host: localhost 
  3. database: 0 
  4.   port: 6379 
  5.   password
  6. jedis: 
  7. pool: 
  8. max-active: 8 
  9.       max-wait: -1ms 
  10. max-idle: 8 
  11.       min-idle: 0 
  12.   timeout: 3000ms 

4、示例代碼

  1. package my.springboot.redis; 
  2.  
  3. import my.springboot.redis.entity.UserDO; 
  4. import my.springboot.redis.service.IUserInfoService; 
  5. import org.junit.Test; 
  6. import org.junit.runner.RunWith; 
  7. import org.springframework.beans.factory.annotation.Autowired; 
  8. import org.springframework.boot.test.context.SpringBootTest; 
  9. import org.springframework.data.redis.core.*; 
  10. import org.springframework.test.context.junit4.SpringRunner; 
  11.  
  12. import java.util.*; 
  13. import java.util.concurrent.TimeUnit; 
  14.  
  15.  
  16. /** 
  17.  * 測(cè)試UserInfo用法 
  18.  **/ 
  19. @RunWith(SpringRunner.class) 
  20. @SpringBootTest 
  21. public class RedisTest { 
  22. @Autowired 
  23. private RedisTemplate redisTemplate; 
  24. /*ValueOperations:簡(jiǎn)單K - V操作 
  25.     SetOperations:set類(lèi)型數(shù)據(jù)操作 
  26.     ZSetOperations:zset類(lèi)型數(shù)據(jù)操作 
  27.     HashOperations:針對(duì)map類(lèi)型的數(shù)據(jù)操作 
  28.     ListOperations:針對(duì)list類(lèi)型的數(shù)據(jù)操作*/ 
  29.  
  30. @Test 
  31. public void redisStrTest() { 
  32.         ValueOperations<String,Object> valueOperations = redisTemplate.opsForValue(); 
  33.         valueOperations.set("name1","小明"); 
  34.         valueOperations.set("name2","小李"); 
  35. System.out.println("刪除前:"+valueOperations.get("name1")); 
  36. redisTemplate.delete("name1"); 
  37. //設(shè)置name1 60秒 過(guò)期 
  38.         redisTemplate.expire("name1",60, TimeUnit.SECONDS); 
  39.         System.out.println("刪除后:"+valueOperations.get("name1")); 
  40.         UserDO user= new UserDO(); 
  41.         user.setId(1); 
  42.         user.setUserName("小明"); 
  43.         user.setPassword("123456"); 
  44.         valueOperations.set("user",user); 
  45.         UserDO user1=  (UserDO) valueOperations.get("user"); 
  46.  
  47.     } 
  48. @Test 
  49. public void redisListTest() { 
  50. ListOperations<String,List<String>> listOperations=redisTemplate.opsForList(); 
  51.         List<String> list=new ArrayList<>(); 
  52.         list.add("籃球"); 
  53.         list.add("足球"); 
  54.         listOperations.leftPushAll("list:str",list); 
  55.         List<String> ll=listOperations.range("list:str",0,-1).get(0); 
  56. long size= listOperations.size("list:str"); 
  57. for (String item: ll ) { 
  58.             System.out.println(item); 
  59.         } 
  60. // 移除操作 
  61.         redisTemplate.delete("list:str"); 
  62.         List<String> aa=listOperations.leftPop("list:str"); 
  63.         System.out.println(listOperations.leftPop("list:str")); 
  64.     } 
  65. @Test 
  66. public void redisHashTest() { 
  67.         HashOperations<String,Object,UserDO> hashOperations = redisTemplate.opsForHash(); 
  68.         UserDO user= new UserDO(); 
  69.         user.setId(1); 
  70.         user.setUserName("小明"); 
  71.         user.setPassword("123456"); 
  72.         hashOperations.put("user:hash",user.hashCode()+"",user); 
  73.         System.out.println(hashOperations.get("user:hash",user.hashCode()+"").getUserName()); 
  74.     } 
  75. @Test 
  76. public void redisSettTest() { 
  77.         SetOperations<String,UserDO> sortOperations = redisTemplate.opsForSet(); 
  78.         UserDO user= new UserDO(); 
  79.         user.setId(1); 
  80.         user.setUserName("小明"); 
  81.         user.setPassword("123456"); 
  82.  
  83.         UserDO user1= new UserDO(); 
  84.         user1.setId(2); 
  85.         user1.setUserName("小張"); 
  86.         user1.setPassword("888888"); 
  87.         sortOperations.add("user:sort",user,user1); 
  88.         Set<UserDO> result = sortOperations.members("user:sort"); 
  89. for (UserDO item : result ) { 
  90.             System.out.println(item.getUserName()); 
  91.  
  92.         } 
  93. redisTemplate.delete("user:sort"); 
  94.         System.out.println(result); 
  95.     } 
  96.  
  97. @Test 
  98. public void redisZSetTest() { 
  99. redisTemplate.delete("ranking-list"); 
  100.         ZSetOperations<String,String> zsortOperations = redisTemplate.opsForZSet(); 
  101. //向集合中插入元素,并設(shè)置分?jǐn)?shù) 
  102.         zsortOperations.add("ranking-list""小明", 80); 
  103. //向集合中插入多個(gè)元素 
  104.         DefaultTypedTuple<String> tuple1 = new DefaultTypedTuple<String>("小王", 100.0); 
  105.         DefaultTypedTuple<String> tuple2 = new DefaultTypedTuple<String>("小張", 90.0); 
  106.         zsortOperations.add("ranking-list", new HashSet<>(Arrays.asList(tuple1, tuple2))); 
  107.  
  108.         System.out.println(zsortOperations.range("ranking-list",0,-1)); 
  109.  
  110.     } 
  111.  

原文鏈接:https://programmerblog.xyz

本文轉(zhuǎn)載自微信公眾號(hào)「IT技術(shù)分享社區(qū)」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系IT技術(shù)分享社區(qū)公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: IT技術(shù)分享社區(qū)
相關(guān)推薦

2021-05-26 06:22:34

SpringBootJPA后端開(kāi)發(fā)

2021-06-05 07:34:00

SpringBootMybatis用法

2023-02-14 07:47:20

SpringBootEhcache

2021-09-26 05:02:00

緩存Ehcache用法

2023-09-08 09:10:33

SpringBoot微服務(wù)架構(gòu)

2023-08-07 14:28:07

SpringBoot工具

2023-01-11 15:11:36

SpringEhcache

2010-09-14 16:20:19

DIV定位

2010-08-16 15:11:02

DIV

2010-08-26 16:40:35

DIV定位

2021-12-22 22:32:48

鴻蒙HarmonyOS應(yīng)用

2010-08-25 15:15:52

CSSclip

2010-07-26 10:09:01

Perl split函

2022-08-31 07:24:56

Docker日志命令

2010-05-13 10:47:20

Collabnet S

2010-07-12 15:16:29

UML關(guān)聯(lián)

2009-12-02 17:07:27

LINUX系統(tǒng)

2025-01-21 08:10:00

2025-02-28 09:47:36

2020-09-23 07:39:59

SpringBoot項(xiàng)目Redis
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 人人九九精| 久久综合影院 | 亚洲色欧美另类 | 久久久久久国产精品免费免费狐狸 | 很黄很污的网站 | 一区二区三区亚洲 | 欧美极品在线 | 久久99精品久久久久 | 99reav | 成人免费视频在线观看 | 国产在线观看一区二区 | 国产精品久久久久久久久 | 欧美日韩1区2区 | 国产麻豆乱码精品一区二区三区 | 精品国产一区二区三区久久久四川 | 免费国产一区 | 亚洲欧美久久 | 国产第一页在线播放 | 日本精品一区二区三区在线观看视频 | 日本不卡免费新一二三区 | 九九久久这里只有精品 | japanhd成人 | 高清视频一区二区三区 | 一区二区成人 | www.久草 | 黄色a级一级片 | 午夜视频在线免费观看 | 国产东北一级毛片 | 国产丝袜一区二区三区免费视频 | 欧美成人一区二免费视频软件 | 亚洲欧洲激情 | 欧美精品一区二区在线观看 | 欧美激情精品久久久久 | 亚洲视频手机在线 | www.伊人.com| 欧美成人a∨高清免费观看 欧美日韩中 | 国产精品欧美一区二区三区不卡 | 一级电影免费看 | 伊人网综合 | 亚洲高清三级 | 国产精品免费高清 |