<tt id="eol1w"></tt>
  • spring boot整合redis實現RedisTemplate三分鐘快速入門

     更新時間:2020年12月29日 11:57:33   作者:程序員小哲  
    這篇文章主要介紹了spring boot整合redis實現RedisTemplate三分鐘快速入門,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

    引入依賴

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    

    RedisTemplate五種數據結構的操作

    • redisTemplate.opsForValue(); //操作字符串
    • redisTemplate.opsForHash(); //操作hash
    • redisTemplate.opsForList(); //操作list
    • redisTemplate.opsForSet(); //操作set
    • redisTemplate.opsForZSet(); //操作有序zset

    RedisTemplate方法講解

    判斷key是否存在

     /**
       * 判斷key是否存在
       */
      @GetMapping("haskey")
      public boolean hasKey(String key) {
        return redisTemplate.hasKey(key);
      }
    

    獲取指定的key的失效時間

     /**
       * 指定key的失效時間
       */
      @GetMapping("expire")
      public void expire(String key, long time) {
        //參數一:key
        //參數二:睡眠時間
        //參數三:睡眠時間單位 TimeUnit.DAYS 天 TimeUnit.HOURS 小時 。。。
        redisTemplate.expire(key, time, TimeUnit.MINUTES);
      }
    

    根據key獲取過期時間

     /**
       * 根據key獲取過期時間
       */
      @GetMapping("getexpire")
      public long getExpire(String key) {
        Long expire = redisTemplate.getExpire(key);
        return expire;
      }
    

    根據key刪除reids中緩存數據

     /**
       * 根據key刪除reids中緩存數據
       */
      @GetMapping("delredisbykey")
      public void delete(String key) {
        redisTemplate.delete(key);
      }
    

    保存和讀取String

     /**
       * 保存和讀取String
       */
      @GetMapping("stringredisdemo")
      public String stringredisdemo() {
        //設置過期時間為1分鐘
        redisTemplate.opsForValue().set("key1", "value1", 1, TimeUnit.MINUTES);
        redisTemplate.opsForValue().set("key2", "value2");
        redisTemplate.opsForValue().set("key3", "value3");
        //讀取redis數據
        String result1 = redisTemplate.opsForValue().get("key1").toString();
        String result2 = redisTemplate.opsForValue().get("key2").toString();
        String result3 = redisTemplate.opsForValue().get("key3").toString();
        System.out.println("緩存結果為:result:" + result1 + " " + result2 + "  " + result3);
        return "緩存結果為:result:" + result1 + " " + result2 + "  " + result3;
      }
    

    保存和讀取list

     /**
       * 保存和讀取list
       */
      @GetMapping("listredisdemo")
      public String listredisdemo() {
        List<String> list1 = new ArrayList<>();
        list1.add("a1");
        list1.add("a2");
        list1.add("a3");
        List<String> list2 = new ArrayList<>();
        list2.add("b1");
        list2.add("b2");
        list2.add("b3");
        redisTemplate.opsForList().leftPush("listkey1", list1);
        redisTemplate.opsForList().rightPush("listkey2", list2);
        List<String> resultList1 = (List<String>) redisTemplate.opsForList().leftPop("listkey1");
        List<String> resultList2 = (List<String>) redisTemplate.opsForList().rightPop("listkey2");
        System.out.println("resultList1:" + resultList1);
        System.out.println("resultList2:" + resultList2);
        return "成功";
      }

    Hash結構,保存和讀取map

     /**
       * Hash結構,保存和讀取map
       */
      @GetMapping("mapredisdemo")
      public String mapredisdemo() {
        Map<String, String> map = new HashMap<>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        map.put("key4", "value4");
        map.put("key5", "value5");
        redisTemplate.opsForHash().putAll("map1", map);
        Map<String, String> resultMap = redisTemplate.opsForHash().entries("map1");
        List<String> reslutMapList = redisTemplate.opsForHash().values("map1");
        Set<String> resultMapSet = redisTemplate.opsForHash().keys("map1");
        String value = (String) redisTemplate.opsForHash().get("map1", "key1");
        System.out.println("value:" + value);
        System.out.println("resultMapSet:" + resultMapSet);
        System.out.println("resultMap:" + resultMap);
        System.out.println("resulreslutMapListtMap:" + reslutMapList);
        return "成功";
      }
    

    保存和讀取Set

     /**
       * 保存和讀取Set
       */
      @GetMapping("setredisdemo")
      public String getredisdemo() {
        SetOperations<String, String> set = redisTemplate.opsForSet();
        set.add("key1", "value1");
        set.add("key1", "value2");
        set.add("key1", "value3");
        Set<String> resultSet = redisTemplate.opsForSet().members("key1");
        System.out.println("resultSet:" + resultSet);
        return "resultSet:" + resultSet;
      }
    

    保存和讀取zset

     /**
       * 保存和讀取zset
       */
      @GetMapping("zsetredisdemo")
      public String zsetredisdemo() {
        ZSetOperations.TypedTuple<Object> objectTypedTuple1 = new DefaultTypedTuple<>("zset-5", 9.6);
        ZSetOperations.TypedTuple<Object> objectTypedTuple2 = new DefaultTypedTuple<>("zset-6", 9.9);
        Set<ZSetOperations.TypedTuple<Object>> tuples = new HashSet<>();
        tuples.add(objectTypedTuple1);
        tuples.add(objectTypedTuple2);
        System.out.println(redisTemplate.opsForZSet().add("zset1", tuples));
        System.out.println(redisTemplate.opsForZSet().range("zset1", 0, -1));
        return "成功";
      }
    

    完整示例代碼

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.core.DefaultTypedTuple;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.core.SetOperations;
    import org.springframework.data.redis.core.ZSetOperations;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.*;
    import java.util.concurrent.TimeUnit;
    
    @RestController
    public class ReidsDemo {
    
      @Autowired
      RedisTemplate redisTemplate;
    
      /**
       * 指定key的失效時間
       */
      @GetMapping("expire")
      public void expire(String key, long time) {
        //參數一:key
        //參數二:睡眠時間
        //參數三:睡眠時間單位 TimeUnit.DAYS 天 TimeUnit.HOURS 小時 。。。
        redisTemplate.expire(key, time, TimeUnit.MINUTES);
      }
    
      /**
       * 根據key獲取過期時間
       */
      @GetMapping("getexpire")
      public long getExpire(String key) {
        Long expire = redisTemplate.getExpire(key);
        return expire;
      }
    
      /**
       * 判斷key是否存在
       */
      @GetMapping("haskey")
      public boolean hasKey(String key) {
        return redisTemplate.hasKey(key);
      }
    
      /**
       * 根據key刪除reids中緩存數據
       */
      @GetMapping("delredisbykey")
      public void delete(String key) {
        redisTemplate.delete(key);
      }
    
      /**
       * 保存和讀取String
       */
      @GetMapping("stringredisdemo")
      public String stringredisdemo() {
        //設置過期時間為1分鐘
        redisTemplate.opsForValue().set("key1", "value1", 1, TimeUnit.MINUTES);
        redisTemplate.opsForValue().set("key2", "value2");
        redisTemplate.opsForValue().set("key3", "value3");
        //讀取redis數據
        String result1 = redisTemplate.opsForValue().get("key1").toString();
        String result2 = redisTemplate.opsForValue().get("key2").toString();
        String result3 = redisTemplate.opsForValue().get("key3").toString();
        System.out.println("緩存結果為:result:" + result1 + " " + result2 + "  " + result3);
        return "緩存結果為:result:" + result1 + " " + result2 + "  " + result3;
      }
    
      /**
       * 保存和讀取list
       */
      @GetMapping("listredisdemo")
      public String listredisdemo() {
        List<String> list1 = new ArrayList<>();
        list1.add("a1");
        list1.add("a2");
        list1.add("a3");
        List<String> list2 = new ArrayList<>();
        list2.add("b1");
        list2.add("b2");
        list2.add("b3");
        redisTemplate.opsForList().leftPush("listkey1", list1);
        redisTemplate.opsForList().rightPush("listkey2", list2);
        List<String> resultList1 = (List<String>) redisTemplate.opsForList().leftPop("listkey1");
        List<String> resultList2 = (List<String>) redisTemplate.opsForList().rightPop("listkey2");
        System.out.println("resultList1:" + resultList1);
        System.out.println("resultList2:" + resultList2);
        return "成功";
      }
    
      /**
       * Hash結構,保存和讀取map
       */
      @GetMapping("mapredisdemo")
      public String mapredisdemo() {
        Map<String, String> map = new HashMap<>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        redisTemplate.opsForHash().putAll("map1", map);
        Map<String, String> resultMap = redisTemplate.opsForHash().entries("map1");
        List<String> reslutMapList = redisTemplate.opsForHash().values("map1");
        Set<String> resultMapSet = redisTemplate.opsForHash().keys("map1");
        String value = (String) redisTemplate.opsForHash().get("map1", "key1");
        System.out.println("value:" + value);
        System.out.println("resultMapSet:" + resultMapSet);
        System.out.println("resultMap:" + resultMap);
        System.out.println("resulreslutMapListtMap:" + reslutMapList);
        return "成功";
      }
    
      /**
       * 保存和讀取Set
       */
      @GetMapping("setredisdemo")
      public String getredisdemo() {
        SetOperations<String, String> set = redisTemplate.opsForSet();
        set.add("key1", "value1");
        set.add("key1", "value2");
        set.add("key1", "value3");
        Set<String> resultSet = redisTemplate.opsForSet().members("key1");
        System.out.println("resultSet:" + resultSet);
        return "resultSet:" + resultSet;
      }
    
      /**
       * 保存和讀取zset
       */
      @GetMapping("zsetredisdemo")
      public String zsetredisdemo() {
        ZSetOperations.TypedTuple<Object> objectTypedTuple1 = new DefaultTypedTuple<>("zset-5", 9.6);
        ZSetOperations.TypedTuple<Object> objectTypedTuple2 = new DefaultTypedTuple<>("zset-6", 9.9);
        Set<ZSetOperations.TypedTuple<Object>> tuples = new HashSet<>();
        tuples.add(objectTypedTuple1);
        tuples.add(objectTypedTuple2);
        System.out.println(redisTemplate.opsForZSet().add("zset1", tuples));
        System.out.println(redisTemplate.opsForZSet().range("zset1", 0, -1));
        return "成功";
      }
    }

    序列化

    直接粘貼在項目中即可

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.connection.RedisConnectionFactory;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
    import org.springframework.data.redis.serializer.RedisSerializer;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    
    /*
    *序列化
     */
    @Configuration
    public class MyRedisConfig {
    
      @Bean(name = "redisTemplate")
      public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        //參照StringRedisTemplate內部實現指定序列化器
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        redisTemplate.setKeySerializer(keySerializer());
        redisTemplate.setHashKeySerializer(keySerializer());
        redisTemplate.setValueSerializer(valueSerializer());
        redisTemplate.setHashValueSerializer(valueSerializer());
        return redisTemplate;
      }
    
      private RedisSerializer<String> keySerializer(){
        return new StringRedisSerializer();
      }
    
      //使用Jackson序列化器
      private RedisSerializer<Object> valueSerializer(){
        return new GenericJackson2JsonRedisSerializer();
      } 
    }

    到此這篇關于spring boot整合redis實現RedisTemplate三分鐘快速入門的文章就介紹到這了,更多相關springboot RedisTemplate入門內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

    相關文章

    • Java Eclipse中實現快速替換變量

      Java Eclipse中實現快速替換變量

      這篇文章主要介紹了Java Eclipse中實現快速替換變量,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
      2020-09-09
    • java匿名內部類實例代碼詳解

      java匿名內部類實例代碼詳解

      這篇文章主要介紹了java匿名內部類實例代碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
      2019-12-12
    • Jmeter post上傳文件實現過程詳解

      Jmeter post上傳文件實現過程詳解

      這篇文章主要介紹了Jmeter post上傳文件實現過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
      2020-08-08
    • 掃二維碼自動跳轉【java】詳解

      掃二維碼自動跳轉【java】詳解

      這篇文章主要介紹了java掃二維碼自動跳轉,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
      2019-05-05
    • Java從數據庫中讀取Blob對象圖片并顯示的方法

      Java從數據庫中讀取Blob對象圖片并顯示的方法

      這篇文章主要介紹了Java從數據庫中讀取Blob對象圖片并顯示的方法,實例分析了Java讀取數據庫中Blob對象圖片的技巧與操作方法,需要的朋友可以參考下
      2015-02-02
    • Java MD5加密(實例講解)

      Java MD5加密(實例講解)

      下面小編就為大家帶來一篇Java MD5加密(實例講解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
      2017-08-08
    • 詳細講述Java中的對象轉型

      詳細講述Java中的對象轉型

      在本篇文章里我們給大家詳細分享了關于Java中的對象轉型的知識點內容,有興趣的朋友們學習下。
      2018-10-10
    • 詳解idea搭建springboot+mybatis框架的教程

      詳解idea搭建springboot+mybatis框架的教程

      這篇文章主要介紹了詳解idea搭建springboot+mybatis框架的教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
      2020-11-11
    • java ArrayList集合中的某個對象屬性進行排序的實現代碼

      java ArrayList集合中的某個對象屬性進行排序的實現代碼

      這篇文章主要介紹了java ArrayList集合中的某個對象屬性進行排序的實現代碼,需要的朋友可以參考下
      2016-07-07
    • 在Eclipse中更改maven項目名的方法

      在Eclipse中更改maven項目名的方法

      今天小編就為大家分享一篇關于在Eclipse中更改maven項目名的方法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
      2019-03-03

    最新評論

    盈利国际彩票 www.seocontest2008.com:荣成市| www.pj88891.com:北安市| www.blackeyedtease.com:凤台县| www.andersonyoga.com:化隆| www.gxyingjing.com:安阳市| www.tw597.com:锦州市| www.gy45.com:泌阳县| www.nq779.com:西城区| www.thanlula.com:大余县| www.carrington-place.com:商城县| www.sillasdecomedor.org:松原市| www.fionatate.com:青海省| www.comapt.com:兖州市| www.senamobilyadekorasyon.com:通榆县| www.eccacaceres.org:韶关市| www.mfgjn.com:阳春市| www.fmciudad9070.com:皮山县| www.caa-w.com:景谷| www.jialeiren.com:阿图什市| www.wwwr26006.com:星座| www.lumpyslist.com:塘沽区| www.hkajwx.com:石阡县| www.clarebirth.com:新沂市| www.kmrln.cn:甘孜| www.sallytarr.com:新营市| www.gottumblr.com:成都市| www.xdhunganh.com:黄冈市| www.dotnetnew.com:保定市| www.yongbeikeji.cn:宁安市| www.moto-journal.com:府谷县| www.yzc833.com:武陟县| www.baiyunplaza.com:乌兰县| www.idcmk.com:界首市| www.janielholidays.com:延长县| www.pme01.com:吉林市| www.927945.com:孟津县| www.dongfanghuojia.com:宁城县| www.taikunco.com:广东省| www.spmcs.com:潜江市| www.buffetvabeach.com:重庆市| www.ramblingabare.com:山阴县| www.hnjialiduo.com:建阳市| www.qyu3.com:奉化市| www.jtjdg.cn:霍林郭勒市| www.hexin518.com:抚州市| www.xmtwzh.com:乌鲁木齐县| www.taifengdianqi.com:察隅县| www.rqxbw.cn:旌德县| www.foodboxmenu.com:阿尔山市| www.dlzhutan.com:花莲县| www.a3gteam.com:华容县| www.blackpigfestivalenniscrone.com:丰都县| www.simonsapartments.com:吕梁市| www.alpacitnz.com:永康市| www.82588k.com:孟州市| www.hg51456.com:元谋县| www.lvvbbe.com:贞丰县| www.yourgamename.com:承德市| www.mashrou3ak.org:阜新市| www.aozora-book.com:洞头县| www.fmipsd.com:东辽县| www.hnwwt.cn:汤原县| www.gzylflzx.com:本溪市| www.jhkangtai.com:莫力| www.090577.com:安顺市| www.degenerat-nerve-angel.com:新平| www.silviatenenti.com:昌宁县| www.all-market.org:双牌县| www.aaaago.com:安平县| www.74li.com:秭归县| www.princewayindustry.com:京山县| www.insect-museum.com:五台县| www.1288ddz.com:将乐县| www.dvsgfx.com:临夏县| www.55conduitroad.com:广昌县| www.lczon.com:内乡县| www.z8689.com:南木林县| www.chiemlamdep.com:新沂市| www.americanestatebrokers.com:前郭尔| www.223980.com:西盟| www.yzzzm.com:江安县| www.pj88851.com:民丰县| www.kneadinbread.com:班玛县| www.cp7721.com:宁津县|