環境要求:Redis 2.6及以上,javase 8.0及以上;java
1、Spring Data Redis 介紹redis
Spring-data-redis是spring的一部分,提供了在srping應用中經過簡單的配置訪問redis服務,對reids底層開發包(Jedis, JRedis, and RJC)進行了高度封裝,RedisTemplate提供了redis各類操做、異常處理及序列化,支持發佈訂閱,並對spring 3.1 cache進行了實現。
spring-data-redis針對jedis提供了以下功能:
spring
1.鏈接池自動管理,提供了一個高度封裝的「RedisTemplate」類.api
2.針對jedis客戶端中大量api進行了歸類封裝,將同一類型操做封裝爲operation接口springboot
2、入門案例app
一、環境構建測試
使用springboot構建項目選擇redis依賴spa
二、配置rediscode
將application.properties修改成application.yml的格式對象
1 spring: 2 redis: 3 database: 0 4 host: localhost 5 port: 6379 6 password: 7 jedis: 8 pool: 9 max-active: 8 10 max-idle: 8 11 min-idle: 0
三、在test中SpringDataRedisDemoApplicationTests.java中測試相關api
1 package com.cenobitor.spring_data_redis_demo; 2 3 import org.junit.Assert; 4 import org.junit.Test; 5 import org.junit.runner.RunWith; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.boot.test.context.SpringBootTest; 8 import org.springframework.data.redis.core.RedisTemplate; 9 import org.springframework.test.context.junit4.SpringRunner; 10 import java.util.List; 11 import java.util.Set; 12 13 @RunWith(SpringRunner.class) 14 @SpringBootTest 15 public class SpringDataRedisDemoApplicationTests { 16 17 @Autowired 18 private RedisTemplate redisTemplate; 19 20 @Test 21 public void contextLoads() { 22 } 23 24 /** 25 * 值得操做 26 */ 27 @Test 28 public void setValue(){ 29 redisTemplate.boundValueOps("name").set("redis"); 30 } 31 32 @Test 33 public void getValue(){ 34 String str = (String) redisTemplate.boundValueOps("name").get(); 35 System.out.println(str); 36 Assert.assertNotNull(str); 37 } 38 39 /** 40 * set類型的操做 41 */ 42 @Test 43 public void setSetValue(){ 44 redisTemplate.boundSetOps("nameset").add("曹操"); 45 redisTemplate.boundSetOps("nameset").add("孫權"); 46 redisTemplate.boundSetOps("nameset").add("劉備"); 47 } 48 @Test 49 public void getSetValue(){ 50 Set nameset = redisTemplate.boundSetOps("nameset").members(); 51 System.out.println(nameset);//[劉備, 孫權, 曹操] 52 } 53 //刪除集合中的某個元素 54 @Test 55 public void deleteSetValue(){ 56 Long remove = redisTemplate.boundSetOps("nameset").remove("劉備"); 57 System.out.println(remove); 58 Assert.assertEquals("1",remove); 59 } 60 //刪除整個集合 61 @Test 62 public void deleteSet(){ 63 Boolean nameset = redisTemplate.delete("nameset"); 64 Assert.assertEquals(true,nameset); 65 } 66 67 /** 68 * List類型操做 69 */ 70 //右壓棧:後添加的對象排在後邊 71 @Test 72 public void setListValue1(){ 73 redisTemplate.boundListOps("namelist1").rightPush("劉備"); 74 redisTemplate.boundListOps("namelist1").rightPush("關羽"); 75 redisTemplate.boundListOps("namelist1").rightPush("張飛"); 76 } 77 @Test 78 public void getListValue1(){ 79 List list = redisTemplate.boundListOps("namelist1").range(0, -1); 80 System.out.println(list);//[劉備, 關羽, 張飛] 81 } 82 //左壓棧:後添加的對象排在前邊 83 @Test 84 public void setListValue2(){ 85 redisTemplate.boundListOps("namelist2").leftPush("劉備"); 86 redisTemplate.boundListOps("namelist2").leftPush("關羽"); 87 redisTemplate.boundListOps("namelist2").leftPush("張飛"); 88 } 89 @Test 90 public void getListValue2(){ 91 List list = redisTemplate.boundListOps("namelist2").range(0, -1); 92 System.out.println(list);//[張飛, 關羽, 劉備] 93 } 94 //查詢集合某個元素 95 @Test 96 public void searchListByIndex(){ 97 String s = (String) redisTemplate.boundListOps("namelist1").index(1); 98 System.out.println(s);//關羽 99 } 100 //移除集合某個元素 101 @Test 102 public void removeListByIndex(){ 103 redisTemplate.boundListOps("namelist1").remove(1, "關羽"); 104 } 105 106 /** 107 * Hash類型操做 108 */ 109 @Test 110 public void setHashValue(){ 111 redisTemplate.boundHashOps("namehash").put("a", "唐僧"); 112 redisTemplate.boundHashOps("namehash").put("b", "悟空"); 113 redisTemplate.boundHashOps("namehash").put("c", "八戒"); 114 redisTemplate.boundHashOps("namehash").put("d", "沙僧"); 115 } 116 @Test 117 public void getHash(){ 118 //提取全部的KEY 119 Set s = redisTemplate.boundHashOps("namehash").keys(); 120 System.out.println(s);//[a, b, c, d] 121 //提取全部的值 122 List values = redisTemplate.boundHashOps("namehash").values(); 123 System.out.println(values);//[唐僧, 悟空, 八戒, 沙僧] 124 //根據KEY提取值 125 String str = (String) redisTemplate.boundHashOps("namehash").get("b"); 126 System.out.println(str);//悟空 127 } 128 //根據KEY移除值 129 @Test 130 public void removeHashByKey() { 131 redisTemplate.boundHashOps("namehash").delete("c"); 132 } 133 }