Spring Boot 操作 Redis

一.Java對(duì)Redis的操作

  • 如果不使用任何框架,Java 使用 Jedis操作數(shù)據(jù)庫(kù).屬于最原始的一種方式;
  • 可以參考文章: Java中使用Jedis操作Redis

二.Spring 框架對(duì)Redis的支持

  • Spring 封裝了 RedisTemplate 對(duì)象來(lái)進(jìn)行對(duì)Redis的各種操作,它支持所有的Redis原生的api。RedisTemplate 位于spring-data-redis包下

  • RedisTemplate在Spring代碼中的結(jié)構(gòu)如下:

    org.springframework.data.redis.core
    Class RedisTemplate<K,V>
    java.lang.Object
        org.springframework.data.redis.core.RedisAccessor
            org.springframework.data.redis.core.RedisTemplate<K,V>
    

    Type Parameters:
    K =模板中的Redis key的類型(通常為String)如:RedisTemplate<String, Object>
    V = 模板中的Redis value的類型

  • RedisTemplate中定義了對(duì)5種數(shù)據(jù)結(jié)構(gòu)操作

    redisTemplate.opsForValue();//操作字符串
    redisTemplate.opsForHash();//操作hash
    redisTemplate.opsForList();//操作list
    redisTemplate.opsForSet();//操作set
    redisTemplate.opsForZSet();//操作有序set
    
  • StringRedisTemplate與RedisTemplate區(qū)別

    • 兩者的關(guān)系是StringRedisTemplate繼承RedisTemplate。
    • 兩者的數(shù)據(jù)是不共通的;也就是說(shuō)StringRedisTemplate只能管理StringRedisTemplate里面的數(shù)據(jù),RedisTemplate只能管理RedisTemplate中的數(shù)據(jù)。
    • SDR默認(rèn)采用的序列化策略有兩種,一種是String的序列化策略,一種是JDK的序列化策略。
      (1).StringRedisTemplate默認(rèn)采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。
      (2).RedisTemplate默認(rèn)采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的
      (3).兩種方式序列化測(cè)試
  • 存取的數(shù)據(jù)就是字符串類型數(shù)據(jù)的時(shí)候,使用StringRedisTemplate

  • 如果數(shù)據(jù)是復(fù)雜的對(duì)象類型,而取出的時(shí)候又不想做任何的數(shù)據(jù)轉(zhuǎn)換,直接從Redis里面取出一個(gè)對(duì)象,那么使用RedisTemplate是更好的選擇。

  • 使用 RedisTemplate 將字符串類型的key,value新增的redis中,在redis的命令下使用 get 獲取不到,而使用StringRedisTemplate的方式就可以獲取到;

三.Spring Boot 操作Redis

  • 在pom.xml中添加依賴

          <!-- 加載redis依賴 -->
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-redis</artifactId>
              <version>1.4.7.RELEASE</version>
          </dependency>
    

    注意:以上一定要添加版本,否則會(huì)mvn會(huì)提示unknow, 點(diǎn)擊查看最新版本

  • 單元測(cè)試

    @RunWith(SpringRunner.class)
    //開(kāi)啟Web上下文測(cè)試
    @WebAppConfiguration
    @SpringBootTest(classes = DomainWechatCardApplication.class)
    public class TestRedis {
      @Autowired
      private StringRedisTemplate stringRedisTemplate;
    
      @Autowired
      private RedisTemplate redisTemplate;
      @Test
      public void testRedis()
      {
          // 保存字符串
          stringRedisTemplate.opsForValue().set("aaa", "111");
          Assert.assertEquals("111", stringRedisTemplate.opsForValue().get("aaa"));
          System.out.println("哈哈哈");
    
          //保存對(duì)象
          WechatCard wechatCard = new WechatCard();
          wechatCard.setAddTime();
          wechatCard.setTitle("測(cè)試redis");
    
          redisTemplate.opsForHash().put("wechatCard",1,wechatCard);
          /*查看redisTemplate 的Serializer*/
          System.out.println(redisTemplate.getKeySerializer());
          System.out.println(redisTemplate.getValueSerializer());
    
    
          /*查看StringRedisTemplate 的Serializer*/
          System.out.println(stringRedisTemplate.getValueSerializer());
          System.out.println(stringRedisTemplate.getValueSerializer());
    
          WechatCard card1 = (WechatCard) redisTemplate.opsForHash().get("wechatCard",1);
          System.out.println(card1);
    
          redisTemplate.opsForValue().set("lang","php");
          System.out.println(redisTemplate.opsForValue().get("lang"));
      }
    }
    

參考文章:
Spring中使用RedisTemplate操作Redis(spring-data-redis)
Spring Boot StringRedisTemplate常用操作
Spring Boot中使用Redis數(shù)據(jù)庫(kù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,261評(píng)論 6 342
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,527評(píng)論 19 139
  • 要加“m”說(shuō)明是MB,否則就是KB了. -Xms:初始值 -Xmx:最大值 -Xmn:最小值 java -Xms8...
    dadong0505閱讀 5,061評(píng)論 0 53
  • 從前,有一朵云,它不下雨,它只下魚(yú)。
    瓦影閱讀 233評(píng)論 0 0
  • 初秋的午后,陰天。陽(yáng)光慵懶無(wú)力地照著,給人莫名的惆悵。 爬墻虎爬滿了整棟小樓,爬滿了小樓門前那顆比樓還要高的樹(shù)。 ...
    蘇_醒閱讀 500評(píng)論 1 3

友情鏈接更多精彩內(nèi)容