最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring boot整合redis實(shí)現(xiàn)RedisTemplate三分鐘快速入門

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

引入依賴

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

RedisTemplate五種數(shù)據(jù)結(jié)構(gòu)的操作

  • 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的失效時(shí)間

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

根據(jù)key獲取過(guò)期時(shí)間

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

根據(jù)key刪除reids中緩存數(shù)據(jù)

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

保存和讀取String

 /**
   * 保存和讀取String
   */
  @GetMapping("stringredisdemo")
  public String stringredisdemo() {
    //設(shè)置過(guò)期時(shí)間為1分鐘
    redisTemplate.opsForValue().set("key1", "value1", 1, TimeUnit.MINUTES);
    redisTemplate.opsForValue().set("key2", "value2");
    redisTemplate.opsForValue().set("key3", "value3");
    //讀取redis數(shù)據(jù)
    String result1 = redisTemplate.opsForValue().get("key1").toString();
    String result2 = redisTemplate.opsForValue().get("key2").toString();
    String result3 = redisTemplate.opsForValue().get("key3").toString();
    System.out.println("緩存結(jié)果為:result:" + result1 + " " + result2 + "  " + result3);
    return "緩存結(jié)果為: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結(jié)構(gòu),保存和讀取map

 /**
   * Hash結(jié)構(gòu),保存和讀取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的失效時(shí)間
   */
  @GetMapping("expire")
  public void expire(String key, long time) {
    //參數(shù)一:key
    //參數(shù)二:睡眠時(shí)間
    //參數(shù)三:睡眠時(shí)間單位 TimeUnit.DAYS 天 TimeUnit.HOURS 小時(shí) 。。。
    redisTemplate.expire(key, time, TimeUnit.MINUTES);
  }

  /**
   * 根據(jù)key獲取過(guò)期時(shí)間
   */
  @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);
  }

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

  /**
   * 保存和讀取String
   */
  @GetMapping("stringredisdemo")
  public String stringredisdemo() {
    //設(shè)置過(guò)期時(shí)間為1分鐘
    redisTemplate.opsForValue().set("key1", "value1", 1, TimeUnit.MINUTES);
    redisTemplate.opsForValue().set("key2", "value2");
    redisTemplate.opsForValue().set("key3", "value3");
    //讀取redis數(shù)據(jù)
    String result1 = redisTemplate.opsForValue().get("key1").toString();
    String result2 = redisTemplate.opsForValue().get("key2").toString();
    String result3 = redisTemplate.opsForValue().get("key3").toString();
    System.out.println("緩存結(jié)果為:result:" + result1 + " " + result2 + "  " + result3);
    return "緩存結(jié)果為: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結(jié)構(gòu),保存和讀取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 "成功";
  }
}

序列化

直接粘貼在項(xiàng)目中即可

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內(nèi)部實(shí)現(xiàn)指定序列化器
    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();
  } 
}

到此這篇關(guān)于spring boot整合redis實(shí)現(xiàn)RedisTemplate三分鐘快速入門的文章就介紹到這了,更多相關(guān)springboot RedisTemplate入門內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用jaxws建立webservice客戶端并實(shí)現(xiàn)soap消息的handler驗(yàn)證示例

    使用jaxws建立webservice客戶端并實(shí)現(xiàn)soap消息的handler驗(yàn)證示例

    這篇文章主要介紹了使用jaxws建立webservice客戶端并實(shí)現(xiàn)soap消息的handler驗(yàn)證示例,需要的朋友可以參考下
    2014-03-03
  • Java 中的 getDeclaredMethods() 方法(使用與原理)

    Java 中的 getDeclaredMethods() 方法(使用與原理)

    文章介紹了Java反射機(jī)制中的`getDeclaredMethods()`方法,詳細(xì)講解了其使用方法、原理、注意事項(xiàng)以及實(shí)際應(yīng)用場(chǎng)景,幫助讀者更好地理解和應(yīng)用這一強(qiáng)大的工具,感興趣的朋友一起看看吧
    2024-12-12
  • Java Redis Redisson配置教程詳解

    Java Redis Redisson配置教程詳解

    這篇文章主要介紹了Java Redis Redisson配置教程,包括Session共享配置及其他Redisson的Config配置方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • Java基礎(chǔ)教程之HashMap迭代刪除使用方法

    Java基礎(chǔ)教程之HashMap迭代刪除使用方法

    這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)教程之HashMap迭代刪除使用方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Spring?Boot中自動(dòng)執(zhí)行sql腳本的方法實(shí)例

    Spring?Boot中自動(dòng)執(zhí)行sql腳本的方法實(shí)例

    在SpringBoot的架構(gòu)中,DataSourceInitializer類可以在項(xiàng)目啟動(dòng)后初始化數(shù)據(jù),我們可以通過(guò)自動(dòng)執(zhí)行自定義sql腳本初始化數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Spring?Boot中自動(dòng)執(zhí)行sql腳本的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • 使用java web 在jsp文件及Class中連接MySQL和SQLserver 的驅(qū)動(dòng)方法

    使用java web 在jsp文件及Class中連接MySQL和SQLserver 的驅(qū)動(dòng)方法

    這篇文章主要介紹了使用java web 在jsp文件及Class中連接MySQL和SQLserver的驅(qū)動(dòng)方法的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • Java面向接口編程之簡(jiǎn)單工廠模式示例

    Java面向接口編程之簡(jiǎn)單工廠模式示例

    這篇文章主要介紹了Java面向接口編程之簡(jiǎn)單工廠模式,結(jié)合實(shí)例形式詳細(xì)分析了java面向接口編程簡(jiǎn)單工廠模式的具體定義與使用方法,需要的朋友可以參考下
    2019-09-09
  • Java集合ArrayList與LinkedList詳解

    Java集合ArrayList與LinkedList詳解

    這篇文章主要介紹了Java集合ArrayList與LinkedList詳解,對(duì)于ArrayList和LinkedList,他們都是List接口的一個(gè)實(shí)現(xiàn)類,并且我們知道他們的實(shí)現(xiàn)方式各不相同,例如ArrayList底層實(shí)現(xiàn)是一個(gè)數(shù)組
    2022-08-08
  • MyBatis?實(shí)現(xiàn)動(dòng)態(tài)排序的多表查詢

    MyBatis?實(shí)現(xiàn)動(dòng)態(tài)排序的多表查詢

    本文將展示如何在 Java 項(xiàng)目中結(jié)合 MyBatis 實(shí)現(xiàn)動(dòng)態(tài)排序,尤其是在涉及多表查詢的情況下,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • java實(shí)現(xiàn)文件復(fù)制、剪切文件和刪除示例

    java實(shí)現(xiàn)文件復(fù)制、剪切文件和刪除示例

    這篇文章主要介紹了java實(shí)現(xiàn)文件復(fù)制、剪切文件和刪除示例,需要的朋友可以參考下
    2014-04-04

最新評(píng)論

阿鲁科尔沁旗| 交口县| 安福县| 呈贡县| 贵港市| 吉安市| 黄浦区| 东光县| 锡林浩特市| 无棣县| 绥阳县| 如东县| 邓州市| 如皋市| 高尔夫| 朔州市| 津南区| 彰武县| 哈尔滨市| 花莲县| 英德市| 南康市| 木里| 荃湾区| 沧州市| 武隆县| 桐城市| 开封市| 资阳市| 积石山| 开平市| 桐柏县| 洪江市| 满城县| 定远县| 庆元县| 胶南市| 龙南县| 嘉善县| 阳新县| 莱西市|