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

SpringBoot使用Redis單機版過期鍵監(jiān)聽事件的實現(xiàn)示例

 更新時間:2024年07月22日 11:14:09   作者:師小師  
在緩存的使用場景中經常需要使用到過期事件,本文主要介紹了SpringBoot使用Redis單機版過期鍵監(jiān)聽事件的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Redis單機版

SpringBoot版本:2.3.6.RELEASE

依賴

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

<!-- commons-pool2連接池 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>

application.yml 配置信息

spring:
  # redis 配置
  redis:
    # 地址
    host: localhost
    # 端口,默認為6379
    port: 6379
    # 數(shù)據庫索引
    database: 0
    # 密碼
    password:
    # 連接超時時間
    timeout: 10s
    lettuce:
      pool:
        # 連接池中的最小空閑連接
        min-idle: 0
        # 連接池中的最大空閑連接
        max-idle: 8
        # 連接池的最大數(shù)據庫連接數(shù)
        max-active: 8
        # #連接池最大阻塞等待時間(使用負值表示沒有限制)
        max-wait: -1ms

redis配置文件

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
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.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * Redis序列化規(guī)則配置類
 */
@Configuration
public class RedisConfig {

    /**
     * 自定義序列化機制
     *
     * @param connectionFactory
     * @return
     */
    @Bean
    @SuppressWarnings(value = {"unchecked", "rawtypes"})
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(connectionFactory);
        // Json序列化配置
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
        // String 的序列化
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        // key采用String的序列化方式
        template.setKeySerializer(stringRedisSerializer);
        // hash的key也采用String的序列化方式
        template.setHashKeySerializer(stringRedisSerializer);
        // value序列化方式采用jackson
        template.setValueSerializer(jackson2JsonRedisSerializer);
        // hash的value序列化方式采用jackson
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }

    // redis 監(jiān)聽事件
    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        return container;
    }

}

redis監(jiān)聽配置信息

import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.connection.*;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {

    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
        log.info("過期事件,啟動監(jiān)聽......");
    }

    /**
     * Redis失效事件 key
     *
     * @param message
     * @param pattern
     */
    @Override
    public void onMessage(Message message, byte[] pattern) {
        String expireKey = message.toString();
        System.out.println("過期事件監(jiān)聽鍵:" + expireKey);
        // 獲取訂單編號
        if (expireKey.startsWith("order:")) {
            // 截取訂單編號
            final String str = expireKey.substring(expireKey.lastIndexOf(":") + 1);
            System.out.println(str);
            System.out.println("轉換后訂單編號:" + Long.valueOf(str));
            // TODO 業(yè)務處理邏輯
        }
    }
}

打開 redis 客戶端添加 key:SETEX "order:20220824170501" 20 "20220824170501" 20秒后過期

查看控制臺輸出內容:

在這里插入圖片描述

到此這篇關于SpringBoot使用Redis單機版過期鍵監(jiān)聽事件的實現(xiàn)示例的文章就介紹到這了,更多相關SpringBoot Redis過期鍵監(jiān)聽內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • 基于javax.validation結合spring的最佳實踐

    基于javax.validation結合spring的最佳實踐

    這篇文章主要介紹了javax.validation結合spring的最佳實踐,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java實戰(zhàn)個人博客系統(tǒng)的實現(xiàn)流程

    Java實戰(zhàn)個人博客系統(tǒng)的實現(xiàn)流程

    讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+springboot+mybatis+redis+vue+elementui+Mysql實現(xiàn)一個個人博客系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2022-01-01
  • SpringBoot枚舉類型參數(shù)認證的實現(xiàn)代碼

    SpringBoot枚舉類型參數(shù)認證的實現(xiàn)代碼

    項目當中經常需要接口參數(shù)是否在一個可選的范圍內,也就是驗證類枚舉參數(shù)的需求,所以本文我們將使用SpringBoot實現(xiàn)枚舉類型參數(shù)認證,文中有詳細的代碼示例,需要的朋友可以參考下
    2023-12-12
  • SpringBoot關于List集合的校驗方式

    SpringBoot關于List集合的校驗方式

    這篇文章主要介紹了SpringBoot關于List集合的校驗方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • java文件刪除不了的坑,特別是壓縮文件問題

    java文件刪除不了的坑,特別是壓縮文件問題

    這篇文章主要介紹了java文件刪除不了的坑,特別是壓縮文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • java讀取properties文件的方法實例分析

    java讀取properties文件的方法實例分析

    這篇文章主要介紹了java讀取properties文件的方法,實例分析了java讀取在項目中與不在項目中properties文件的相關技巧,需要的朋友可以參考下
    2015-06-06
  • Mybatis表的關聯(lián)查詢詳情

    Mybatis表的關聯(lián)查詢詳情

    這篇文章主要介紹了Mybatis表的關聯(lián)查詢詳情,文章通過圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • SpringBoot項目獲取統(tǒng)一前綴配置及獲取非確定名稱配置方法

    SpringBoot項目獲取統(tǒng)一前綴配置及獲取非確定名稱配置方法

    在SpringBoot項目中,使用@ConfigurationProperties注解可獲取統(tǒng)一前綴的配置,具體做法是創(chuàng)建配置類,使用prefix屬性指定配置的前綴,本文給大家介紹SpringBoot項目獲取統(tǒng)一前綴配置以及獲取非確定名稱配置方法,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • SpringBoot集成Mybatis-Plus多租戶架構實現(xiàn)

    SpringBoot集成Mybatis-Plus多租戶架構實現(xiàn)

    本文主要介紹了SpringBoot集成Mybatis-Plus多租戶架構實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • SpringBoot兩種方式刷新配置信息

    SpringBoot兩種方式刷新配置信息

    這篇文章主要介紹了SpringBoot兩種方式刷新配置信息,一種是@?ConfigurationProperties?不能自動刷新,需要手動調用contextRefresher.refresh()方法來刷新配置,第二種方法可以嘗試下,需要的朋友可以參考下
    2023-08-08

最新評論

上思县| 蛟河市| 龙里县| 江安县| 钟山县| 合作市| 来宾市| 朝阳市| 德保县| 静宁县| 新田县| 游戏| 沂水县| 盐边县| 林周县| 汉沽区| 樟树市| 洛扎县| 方山县| 永胜县| 杨浦区| 登封市| 南乐县| 石泉县| 溆浦县| 修武县| 仪征市| 瓦房店市| 三门县| 桐梓县| 普宁市| 沂水县| 葫芦岛市| 桂东县| 阜阳市| 莆田市| 科尔| 雅江县| 栾川县| 黔东| 鲜城|