Spring Data Redis —— 快速入門

  環境要求: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

  • 
ValueOperations:簡單鍵值對操做 String

  • SetOperations:set類型數據操做 set

  • ZSetOperations:zset類型數據操做 sortedset---->zset

  • HashOperations:針對hash類型的數據操做 hash

  • ListOperations:針對list類型的數據操做 list

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 }
相關文章
相關標籤/搜索