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

Redis之SpringDataRedis用法詳解

 更新時間:2025年04月22日 09:36:31   作者:2302_79952574  
這篇文章主要介紹了Redis之SpringDataRedis的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Spring Data Redis 使得開發(fā)者能夠更容易地與 Redis 數(shù)據(jù)庫進(jìn)行交互,并且支持不同的 Redis 客戶端實現(xiàn),如 JedisLettuce。

Spring Data Redis 會自動選擇一個客戶端,通常情況下,Spring Boot 默認(rèn)使用 Lettuce 作為 Redis 客戶端。你也可以選擇使用 Jedis。

Spring Data Redis 的使用步驟

(1)引入spring-boot-starter-data-redis依賴

<dependency>
    <!--redia依賴-->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
    <!--common-pool-->
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>

(2)在application.yml配置Redis信息

spring:
  data:
    redis:
      host: 192.168.30.130
      port: 6379
      password: xxxxxx
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0
        max-wait: 100ms

(3)注入RedisTemplate

SpringDataRedis 是 Spring Data Redis 中最重要的工具類,其中封裝了各種對Redis的操作,并且將不同數(shù)據(jù)類型的操作API封裝到了不同的類型中。

SpringDataRedis 可以接受任何類型的java對象,并通過 RedisSerializer 將它們轉(zhuǎn)成 Redis 可以處理的字節(jié)(byte[])格式。

這是因為 Redis 本身只能夠存儲字節(jié)數(shù)據(jù),而不能直接存儲 Java 對象。因此,Spring Data Redis 提供了自動序列化和反序列化機(jī)制來支持 Java 對象的存儲和讀取。

@SpringBootTest
class RedisDemoApplicationTests {
    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    void testString() {
        //寫入一條String數(shù)據(jù)
        redisTemplate.opsForValue().set("name","虎哥");
        //獲取string數(shù)據(jù)
        Object name = redisTemplate.opsForValue().get("name");
        System.out.println("name = " + name);
    }

}

RedisTemplate 默認(rèn)使用 JDKSerializationRedisSerializer 來序列化和反序列化對象,但它具有不可讀性,JDK 序列化的字節(jié)流是二進(jìn)制的,不易于人工讀取或調(diào)試。如果你需要查看 Redis 中存儲的數(shù)據(jù),JDK 序列化的對象將無法直接轉(zhuǎn)換回人類可讀的格式,這使得調(diào)試和監(jiān)控變得困難。

可以自定義RedisTemplate的序列化方式,常見做法是key使用String序列化(StringRedisSerializer),value使用JSON序列化(GenericJackson2JsonRedisSerializer)。這種方法可以自動幫我們處理JSON的序列化和反序列化,但是會占用額外空間。

所以為了節(jié)省空間,我們并不會使用JSON序列化器來處理value,而是統(tǒng)一使用String序列化器(StringRedisTemplate),要求只能存儲String類型的key和value。當(dāng)需要存儲java對象時,手動把對象序列化為JSON,讀取Redis時手動把讀取到的JSON反序列化為對象。

@SpringBootTest
class RedisStringTests {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    
    @Test
    void testString() {
        //寫入一條String數(shù)據(jù)
        stringRedisTemplate.opsForValue().set("name","虎哥");
        //獲取string數(shù)據(jù)
        Object name = stringRedisTemplate.opsForValue().get("name");
        System.out.println("name = " + name);
    }
    
    private static final ObjectMapper mapper = new ObjectMapper();
    @Test
    void testSaveUser() throws JsonProcessingException {
        //創(chuàng)建對象
        User user = new User("虎哥", 21);
        //手動序列化
        String json = mapper.writeValueAsString(user);
        //寫入數(shù)據(jù)
        stringRedisTemplate.opsForValue().set("user:200",json);
        //獲取數(shù)據(jù)
        String jsonUser = stringRedisTemplate.opsForValue().get("user:200");
        //手動反序列化
        User user1 = mapper.readValue(jsonUser, User.class);
        System.out.println("user1 = " + user1);
    }

    @Test
    void testHash() {
        stringRedisTemplate.opsForHash().put("user:400","name","虎哥");
        stringRedisTemplate.opsForHash().put("user:400","age","21");

        Map<Object, Object> entries = stringRedisTemplate.opsForHash().entries("user:400");
        System.out.println("entries = " + entries);
    }
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 8 對 HashSet 元素進(jìn)行排序的操作方法

    Java 8 對 HashSet 元素進(jìn)行排序的操作方法

    Java 中HashSet是一個不保證元素順序的集合類,其內(nèi)部是基于 HashMap 實現(xiàn)的,HashSet不支持排序,我們在需要對HashSet 排序時,必須將其轉(zhuǎn)換為支持排序的集合或數(shù)據(jù)結(jié)構(gòu),如 List,本文將詳細(xì)介紹在 Java 8 中如何對 HashSet 中的元素進(jìn)行排序,感興趣的朋友一起看看吧
    2024-11-11
  • java中符號@的作用及用法舉例詳解

    java中符號@的作用及用法舉例詳解

    在Java編程語言中,@符號被稱為注解(Annotation),下面這篇文章主要介紹了java中符號@的作用及用法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • 詳解微信小程序 同步異步解決辦法

    詳解微信小程序 同步異步解決辦法

    這篇文章主要介紹了詳解微信小程序 同步異步解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 淺談java多線程編程

    淺談java多線程編程

    這篇文章主要介紹了java多線程編程的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)java多線程,感興趣的朋友可以了解下
    2020-08-08
  • GitLab在IDEA中回滾主分支問題

    GitLab在IDEA中回滾主分支問題

    這是工作中遇到的問題,記錄下來,也方便自己后面查看操作步驟,也方便各位遇到這個問題,不至于卡太久,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java中ArrayList和LinkedList的區(qū)別

    Java中ArrayList和LinkedList的區(qū)別

    ArrayList和LinkedList在這個方法上存在一定的性能差異,本文就介紹了Java中ArrayList和LinkedList的區(qū)別,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • javaWEB中前后臺亂碼問題的解決方法總結(jié)

    javaWEB中前后臺亂碼問題的解決方法總結(jié)

    下面小編就為大家?guī)硪黄猨avaWEB中前后臺亂碼問題的解決方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 關(guān)于Spring?Data?Jpa?自定義方法實現(xiàn)問題

    關(guān)于Spring?Data?Jpa?自定義方法實現(xiàn)問題

    這篇文章主要介紹了關(guān)于Spring?Data?Jpa?自定義方法實現(xiàn)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java面試LruCache?和?LinkedHashMap及算法實現(xiàn)

    java面試LruCache?和?LinkedHashMap及算法實現(xiàn)

    這篇文章主要為大家介紹了java面試LruCache?和?LinkedHashMap及算法實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Java實現(xiàn)簡易學(xué)生管理系統(tǒng)

    Java實現(xiàn)簡易學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)簡易學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07

最新評論

永宁县| 历史| 盈江县| 工布江达县| 铁岭县| 彝良县| 西乌珠穆沁旗| 大丰市| 青神县| 九龙城区| 常山县| 榕江县| 石阡县| 越西县| 久治县| 汾阳市| 六安市| 仁化县| 万州区| 牙克石市| 金寨县| 东阳市| 丽江市| 广南县| 孟津县| 长宁区| 乌鲁木齐市| 桐城市| 崇义县| 南昌县| 咸宁市| 微山县| 杂多县| 博爱县| 呼玛县| 休宁县| 彭水| 图木舒克市| 临猗县| 韩城市| 余姚市|