欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

RedisTemplate的使用與注意事項(xiàng)小結(jié)

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

一.什么是RedisTemplate

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

Spring-Data-Redis 是通過(guò)整合Lettuce和Jedis這倆種Redis客戶端產(chǎn)生的,對(duì)外則提供了RedisTemplate這樣統(tǒng)一的API來(lái)供調(diào)用者訪問(wèn)。它既支持Luttuce的響應(yīng)式編程也支持JDK中集合的實(shí)現(xiàn)。

二.如何使用RedisTemplate

首先要導(dǎo)入相關(guān)依賴

        <!--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>

導(dǎo)入相關(guān)依賴之后,通過(guò)配置文件 application.yml 進(jìn)行配置,由于 RedisTemplate 是整合的Lettuce和Jedis,因此在配置連接池的時(shí)候需要進(jìn)行選擇是使用Lettuce還是Jedis(默認(rèn)是Lettuce)

spring:
  data:
    redis:
      host: Redis所在主機(jī)地址
      port: Redis對(duì)應(yīng)端口號(hào)默認(rèn)6379
      password: 密碼
      lettuce:
        pool:
          max-active: 最大連接數(shù)
          max-wait: 等待時(shí)長(zhǎng)
          max-idle: 最大空閑連接
          min-idle: 最小空閑連接

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

    @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("驗(yàn)證碼為" + o);
    }

運(yùn)行結(jié)果:

RedisTemplate的API

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

字符串操作

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

哈希操作

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

列表操作

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

集合操作

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

有序集合操作

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

鍵操作

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

事務(wù)

  • multi(): 開(kāi)啟事務(wù)。
  • exec(): 提交事務(wù)。

發(fā)布/訂閱

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

連接管理

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

序列化

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

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

序列化

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

這是因?yàn)镽edis的序列化并沒(méi)有按照我們預(yù)期的進(jìn)行轉(zhuǎn)化,我們需要自己去重寫一個(gè)序列化,如下將key設(shè)置為String類型、value設(shè)置為json類型,最后將這個(gè)對(duì)象交給Spring管理,之后在調(diào)用該對(duì)象的時(shí)候就會(huì)自動(dòng)選擇我們配置的這個(gè)

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

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

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

我們?cè)俅未蜷_(kāi)測(cè)試觀察結(jié)果:

@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("驗(yàn)證碼為" + o);
    }
}

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

三.StringRedisTemplate

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

打開(kāi)源碼我們可以看見(jiàn)對(duì)于Key、Value、HashKey、HashValue都是進(jìn)行String類型的序列化。

因此對(duì)于一些復(fù)雜類型,如對(duì)象在StringRedisTemplate的時(shí)候往往需要自己手動(dòng)序列化將對(duì)象轉(zhuǎn)為JSON再存入Redis。

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

相關(guān)文章

  • 嵌入式Redis服務(wù)器在Spring Boot測(cè)試中的使用教程

    嵌入式Redis服務(wù)器在Spring Boot測(cè)試中的使用教程

    這篇文章主要介紹了嵌入式Redis服務(wù)器在Spring Boot測(cè)試中的使用,本文通過(guò)實(shí)例代碼場(chǎng)景分析給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-07-07
  • redis數(shù)據(jù)一致性之延時(shí)雙刪策略詳解

    redis數(shù)據(jù)一致性之延時(shí)雙刪策略詳解

    在使用redis時(shí),需要保持redis和數(shù)據(jù)庫(kù)數(shù)據(jù)的一致性,最流行的解決方案之一就是延時(shí)雙刪策略,今天我們就來(lái)詳細(xì)刨析一下,需要的朋友可以參考下
    2023-09-09
  • Redis 2.8-4.0過(guò)期鍵優(yōu)化過(guò)程全紀(jì)錄

    Redis 2.8-4.0過(guò)期鍵優(yōu)化過(guò)程全紀(jì)錄

    這篇文章主要給大家介紹了關(guān)于Redis 2.8-4.0過(guò)期鍵優(yōu)化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Redis排序命令Sort深入解析

    Redis排序命令Sort深入解析

    這篇文章主要為大家介紹了Redis排序命令Sort深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Redis安裝教程圖解

    Redis安裝教程圖解

    Redis是一個(gè)開(kāi)源的使用ANSI C語(yǔ)言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的API。本文就教大家如何安裝Redis,需要的朋友可以參考下
    2015-10-10
  • Redis之sql緩存的具體使用

    Redis之sql緩存的具體使用

    本文主要介紹了Redis之sql緩存的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Redis的鍵String全面詳解

    Redis的鍵String全面詳解

    這篇文章主要為大家介紹了Redis的鍵String全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Redis在windows環(huán)境下如何啟動(dòng)

    Redis在windows環(huán)境下如何啟動(dòng)

    這篇文章主要介紹了Redis在windows環(huán)境下如何啟動(dòng)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 利用ganglia監(jiān)控redis的最新解決方法

    利用ganglia監(jiān)控redis的最新解決方法

    這篇文章主要給大家介紹了如何利用ganglia監(jiān)控redis的最新解決方法,網(wǎng)上的資料基本上就是13年的一篇文章,但發(fā)現(xiàn)文章的內(nèi)容有些許問(wèn)題,于是整理了下最新的解決方法,下面通過(guò)這篇文章來(lái)一起詳細(xì)的看看吧。
    2016-12-12
  • Redis分布式可重入鎖實(shí)現(xiàn)方案

    Redis分布式可重入鎖實(shí)現(xiàn)方案

    在單進(jìn)程環(huán)境下,要保證一個(gè)代碼塊的同步執(zhí)行,直接用synchronized 關(guān)鍵字或ReetrantLock 即可,在分布式環(huán)境下,要保證多個(gè)節(jié)點(diǎn)的線程對(duì)代碼塊的同步訪問(wèn),就必須要用到分布式鎖方案,本文介紹一下基于 Redis實(shí)現(xiàn)的分布式鎖方案,感興趣的朋友一起看看吧
    2024-02-02

最新評(píng)論