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

RedisTemplate的使用與注意事項小結

 更新時間:2024年10月22日 10:42:13   作者:luming.02  
本文詳細介紹了RedisTemplate的用途和使用方法,RedisTemplate是Spring提供的一個工具類,用于操作Redis數(shù)據庫,其API提供了豐富的方法來實現(xiàn)對Redis各種操作,本文就來詳細的介紹一下,感興趣的可以來了解一下

一.什么是RedisTemplate

RedisTemplate 是一個工具類,由 Spring 官方提供的方便操作 Redis 數(shù)據庫的一個工具類,來源于 org.springframework.data.redis.core 包下。其本質屬于 Spring-Data 模塊下的 Spring-Data-Redis 部分,它提供了從 Spring 應用程序輕松配置和訪問 Redis的功能。

Spring-Data-Redis 是通過整合Lettuce和Jedis這倆種Redis客戶端產生的,對外則提供了RedisTemplate這樣統(tǒng)一的API來供調用者訪問。它既支持Luttuce的響應式編程也支持JDK中集合的實現(xiàn)。

二.如何使用RedisTemplate

首先要導入相關依賴

        <!--Redis依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--連接池依賴-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.11.1</version>
        </dependency>

導入相關依賴之后,通過配置文件 application.yml 進行配置,由于 RedisTemplate 是整合的Lettuce和Jedis,因此在配置連接池的時候需要進行選擇是使用Lettuce還是Jedis(默認是Lettuce)

spring:
  data:
    redis:
      host: Redis所在主機地址
      port: Redis對應端口號默認6379
      password: 密碼
      lettuce:
        pool:
          max-active: 最大連接數(shù)
          max-wait: 等待時長
          max-idle: 最大空閑連接
          min-idle: 最小空閑連接

在配置完成后,通過依賴注入就可以直接使用

    @Autowired
    private RedisTemplate redisTemplate;
    
    @Test
    void testCode() {
        String checheCode = "cheche_code";
        String code = "168901";
        //寫入Redis
        redisTemplate.opsForValue().set(checheCode, code);
        //讀出Redis
        Object o = redisTemplate.opsForValue().get(checheCode);
        System.out.println("驗證碼為" + o);
    }

運行結果:

RedisTemplate的API

RedisTemplate 提供了豐富的方法來實現(xiàn)對 Redis 的各種操作,包括但不限于字符串、哈希、列表、集合和有序集合等數(shù)據結構的操作。以下是一些常用的 RedisTemplate API:

字符串操作

  • opsForValue().set(key, value): 設置字符串值。
  • opsForValue().get(key): 獲取字符串值。
  • opsForValue().incr(key): 字符串值自增。
  • opsForValue().decr(key): 字符串值自減。

哈希操作

  • opsForHash().getOperations().put(key, hashKey, value): 向哈希中添加鍵值對。
  • opsForHash().getOperations().get(key, hashKey): 獲取哈希中的值。
  • opsForHash().getOperations().entries(key): 獲取哈希中的所有鍵值對。

列表操作

  • opsForList().leftPush(key, value): 從列表左側添加元素。
  • opsForList().rightPush(key, value): 從列表右側添加元素。
  • opsForList().leftPop(key): 從列表左側彈出元素。
  • opsForList().rightPop(key): 從列表右側彈出元素。

集合操作

  • opsForSet().add(key, value): 向集合中添加元素。
  • opsForSet().members(key): 獲取集合中的所有元素。
  • opsForSet().remove(key, value): 從集合中移除元素。

有序集合操作

  • opsForZSet().add(key, value, score): 向有序集合中添加元素,并指定分數(shù)。
  • opsForZSet().range(key, start, end): 獲取有序集合中指定分數(shù)范圍內的元素。
  • opsForZSet().removeRangeByScore(key, minScore, maxScore): 按分數(shù)范圍移除有序集合中的元素。

鍵操作

  • delete(key): 刪除鍵。
  • hasKey(key): 檢查鍵是否存在。
  • keys(pattern): 根據模式匹配獲取所有鍵。

事務

  • multi(): 開啟事務。
  • exec(): 提交事務。

發(fā)布/訂閱

  • convertAndSend(channel, message): 發(fā)布消息。
  • subscribe(RedisMessageListenerContainer, MessageListener): 訂閱消息。

連接管理

  • getConnectionFactory(): 獲取連接工廠。
  • getExecutor(): 獲取執(zhí)行器。

序列化

  • setKeySerializer(Serializer): 設置鍵的序列化器。
  • setValueSerializer(Serializer): 設置值的序列化器。

更多操作可以查看官方提供的API文檔:RedisTemplate (Spring Data Redis 3.3.2 API)

序列化

我們打開Redis圖形化工具查看一下剛才的驗證碼會發(fā)現(xiàn)剛才存入的驗證碼變成了一堆亂碼

這是因為Redis的序列化并沒有按照我們預期的進行轉化,我們需要自己去重寫一個序列化,如下將key設置為String類型、value設置為json類型,最后將這個對象交給Spring管理,之后在調用該對象的時候就會自動選擇我們配置的這個

@Configuration
public class RedisConfig {
    
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        //創(chuàng)建RedisTemplate對象
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        //設置連接工廠
        template.setConnectionFactory(connectionFactory);
        //創(chuàng)建JSON序列化工具
        GenericJackson2JsonRedisSerializer jsonSerializer = new GenericJackson2JsonRedisSerializer();
        //設置key的序列化
        template.setKeySerializer(RedisSerializer.string());
        template.setHashValueSerializer(RedisSerializer.string());
        //設置value的序列化
        template.setValueSerializer(jsonSerializer);
        template.setHashValueSerializer(jsonSerializer);
        return template;
    }
}

對于JSON序列化工具,我們也需要引入依賴:

        <!--jackson依賴-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.17.1</version>
        </dependency>

我們再次打開測試觀察結果:

@SpringBootTest
class RedisDemoApplicationTests {
    
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    
    @Test
    void testCode() {
        String checheCode = "cheche_code";
        String code = "168901";
        //寫入Redis
        redisTemplate.opsForValue().set(checheCode, code);
        //讀出Redis
        Object o = redisTemplate.opsForValue().get(checheCode);
        System.out.println("驗證碼為" + o);
    }
}

我們可以發(fā)現(xiàn)數(shù)據已經正常顯示出來了

三.StringRedisTemplate

由于存儲在 Redis 中的 key 和 value 通常是很常見的 String 類型,Redis模塊提供了 RedisConnection 和 RedisTemplate 的擴展,分是 StringRedisConnection 和 StringRedisTemplate,作為字符串操作的解決方案。

打開源碼我們可以看見對于Key、Value、HashKey、HashValue都是進行String類型的序列化。

因此對于一些復雜類型,如對象在StringRedisTemplate的時候往往需要自己手動序列化將對象轉為JSON再存入Redis。

到此這篇關于RedisTemplate的使用與注意事項小結的文章就介紹到這了,更多相關RedisTemplate使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • redis如何后臺啟動的方法

    redis如何后臺啟動的方法

    這篇文章主要介紹了redis如何后臺啟動的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 阿里云官方Redis開發(fā)規(guī)范總結

    阿里云官方Redis開發(fā)規(guī)范總結

    本文主要介紹了阿里云官方Redis開發(fā)規(guī)范總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Redis集群利用Redisson實現(xiàn)分布式鎖方式

    Redis集群利用Redisson實現(xiàn)分布式鎖方式

    這篇文章主要介紹了Redis集群利用Redisson實現(xiàn)分布式鎖方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • python中使用redis用法詳解

    python中使用redis用法詳解

    Redis擁有豐富的數(shù)據結構,擁有事務功能,保證命令的原子性。由于是內存數(shù)據庫,讀寫非常高速,可達10w/s的評率,所以一般應用于數(shù)據變化快、實時通訊、緩存等。這篇文章給大家講解一下Python如何使用Redis,并進行相關的實戰(zhàn)操作。
    2022-12-12
  • 詳解redis緩存與數(shù)據庫一致性問題解決

    詳解redis緩存與數(shù)據庫一致性問題解決

    這篇文章主要介紹了詳解redis緩存與數(shù)據庫一致性問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Redis中RedisSearch使用及應用場景

    Redis中RedisSearch使用及應用場景

    RedisSearch是一個強大的全文搜索和索引模塊,可以為Redis添加高效的搜索功能,下面就來介紹一下RedisSearch使用及應用場景,感興趣的可以了解一下
    2025-05-05
  • Linux快速部署Redis

    Linux快速部署Redis

    這篇文章介紹了Linux下快速部署Redis的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-01-01
  • Redis數(shù)據結構ZipList,QuickList,SkipList使用及說明

    Redis數(shù)據結構ZipList,QuickList,SkipList使用及說明

    文章介紹了ZipList數(shù)據結構及其在Redis中的應用,詳細解釋了其緊湊的內存存儲方式和特點和應用場景,同時探討了QuickList及其在Redis中的作用,以及不同數(shù)據類型的編碼方式和應用場景
    2026-04-04
  • Redis中Zset類型常用命令的實現(xiàn)

    Redis中Zset類型常用命令的實現(xiàn)

    Zset是Redis的一種有序集合數(shù)據類型,Zset通過壓縮列表和跳躍表兩種底層編碼方式支持小數(shù)據集和大數(shù)據集,支持多種操作,包括添加、查詢、刪除元素以及集合運算等,具有不同的時間復雜度,感興趣的可以了解一下
    2024-10-10
  • 基于Redis實現(xiàn)基本搶紅包算法詳解

    基于Redis實現(xiàn)基本搶紅包算法詳解

    [key, value]的緩存數(shù)據庫, Redis官方性能描述非常高, 所以面對高并發(fā)場景, 使用Redis來克服高并發(fā)壓力是一個不錯的手段, 本文主要基于Redis來實現(xiàn)基本的搶紅包系統(tǒng)設計,感興趣的朋友跟隨小編一起看看吧
    2024-04-04

最新評論

肥西县| 澳门| 临高县| 克东县| 龙陵县| 鄂托克前旗| 青海省| 南宫市| 清苑县| 大方县| 淮阳县| 兴仁县| 垦利县| 武邑县| 泸西县| 南川市| 汕头市| 天全县| 富顺县| 松原市| 靖边县| 博乐市| 台北县| 沈丘县| 聂荣县| 阿城市| 鱼台县| 英超| 靖安县| 秦安县| 嘉义县| 临沧市| 丹东市| 渝中区| 柳州市| 即墨市| 弥渡县| 南充市| 嵩明县| 龙游县| 乌拉特后旗|