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

Redis過期監(jiān)聽機(jī)制,訂單超時(shí)自動(dòng)取消方式

 更新時(shí)間:2024年05月27日 10:18:06   作者:絕對(duì)沒精神  
這篇文章主要介紹了Redis過期監(jiān)聽機(jī)制,訂單超時(shí)自動(dòng)取消方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Redis過期監(jiān)聽機(jī)制 (Windows) 

一、功能介紹

1. redis過期監(jiān)聽:當(dāng)數(shù)據(jù)設(shè)置了過期時(shí)間,redis會(huì)根據(jù)某些機(jī)制去時(shí)時(shí)監(jiān)聽過期的數(shù)據(jù) 

2. 應(yīng)用場(chǎng)景: 商城中未支付過期的訂單、通知(當(dāng)然也可以用redis的延遲)等等 

3. 本篇文章只限于Windows,Linux配置差不多,只是操作系統(tǒng)不同

二、redis過期監(jiān)聽的配置

1. 在redis安裝的目錄下找到redis.windows.conf文件

2. 編輯redis.windows.conf找到配置文件中notify-keyspace-events " " 的值, 

修改為notify-keyspace-events Ex(如圖下)

3. 關(guān)閉redis啟動(dòng)窗口,在redis安裝的目錄下找到start.bat重啟redis (如圖下)

4. 在SpringBoot集成使用

  • 1、引入redis相關(guān)依賴(如圖下)
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

  • 2、創(chuàng)建配置類RedisListenerConfig
import org.springframework.beans.factory.annotation.Autowired;
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.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * @date 2023-02-21
 * @author LIZAN
 */
@Configuration
public class RedisListenerConfig {

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 處理亂碼
     * @return
     */
    @Bean
    public RedisTemplate redisTemplateInit() {

        // key序列化
        redisTemplate.setKeySerializer(new StringRedisSerializer());

        //val實(shí)例化
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());

        return redisTemplate;
    }

    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        return container;
    }
}
  • 3、繼承KeyExpirationEventMessageListener創(chuàng)建redis過期事件的監(jiān)聽類,實(shí)現(xiàn)onMessage方法接收過去redis數(shù)據(jù)
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;

/**
 * @author LiZan
 * @version 1.0
 * @date 2023/2/21 14:09
 */
@Slf4j
@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }

    /**
     * 針對(duì)redis數(shù)據(jù)失效事件,進(jìn)行數(shù)據(jù)處理
     * @param message 失效的key
     */
    @Override
    public void onMessage(Message message, byte[] pattern) {
        log.info("過期redis數(shù)據(jù):" + message.toString());
        try {
            String key = message.toString();
            //從失效key中篩選代表訂單失效的key
            String orderWithKey = "order_";
            if (null !=  key && orderWithKey.startsWith(key)) {
                        log.info("訂單號(hào)為【" + 123456 + "】超時(shí)未支付-自動(dòng)修改為已取消狀態(tài)");
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.error("【修改支付訂單過期狀態(tài)異常】:" + e.getMessage());
        }
    }
}
  • 4、測(cè)試Redis過期監(jiān)聽,在redis安裝的目錄下找到redis-cli.exe 打開后執(zhí)行redis語法寫入五秒后過期的測(cè)試數(shù)據(jù),SET order_no123213 123 EX 5

  • 5、數(shù)據(jù)過期后,進(jìn)入Redis過期監(jiān)聽方法,打印過期數(shù)據(jù)從而實(shí)現(xiàn)業(yè)務(wù)

總結(jié)

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

相關(guān)文章

  • 基于redis分布式鎖實(shí)現(xiàn)秒殺功能

    基于redis分布式鎖實(shí)現(xiàn)秒殺功能

    這篇文章主要為大家詳細(xì)介紹了基于redis分布式鎖實(shí)現(xiàn)秒殺功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Reactor?WebFlux集成Redis處理緩存操作

    Reactor?WebFlux集成Redis處理緩存操作

    這篇文章主要為大家介紹了Reactor?WebFlux集成Redis處理緩存操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Redis+MQ高并發(fā)秒殺的技術(shù)方案與實(shí)現(xiàn)

    Redis+MQ高并發(fā)秒殺的技術(shù)方案與實(shí)現(xiàn)

    本文提出了一種基于Redis與消息隊(duì)列的高并發(fā)秒殺系統(tǒng)解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • redis啟動(dòng)停止,查看redis端口實(shí)現(xiàn)方式

    redis啟動(dòng)停止,查看redis端口實(shí)現(xiàn)方式

    文章主要講述了如何查看Redis進(jìn)程、停止Redis以及使用配置文件啟動(dòng)Redis集群和Sentinel哨兵的方法,并提到可以通過兩種方法后臺(tái)啟動(dòng)Redis服務(wù),作者表示這些是個(gè)人經(jīng)驗(yàn),希望能為大家提供參考
    2026-05-05
  • Redis中刪除策略的幾種實(shí)現(xiàn)方式

    Redis中刪除策略的幾種實(shí)現(xiàn)方式

    本文詳細(xì)介紹了Redis的過期鍵刪除策略和內(nèi)存淘汰策略,過期鍵刪除策略包括定時(shí)刪除、惰性刪除和定期刪除,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-11-11
  • 如何利用Redis鎖解決高并發(fā)問題詳解

    如何利用Redis鎖解決高并發(fā)問題詳解

    redis鎖處理高并發(fā)問題十分常見,下面這篇文章主要給大家介紹了關(guān)于如何使用Redis鎖解決高并發(fā)問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Redis中的List結(jié)構(gòu)從使用到原理分析

    Redis中的List結(jié)構(gòu)從使用到原理分析

    本文詳解Redis List結(jié)構(gòu),涵蓋其基本操作、內(nèi)部實(shí)現(xiàn)(ziplist、linkedlist、quicklist)、應(yīng)用場(chǎng)景(消息隊(duì)列、動(dòng)態(tài)排行、歷史記錄)及性能優(yōu)化策略,如配置參數(shù)、批量操作,幫助開發(fā)者高效使用
    2025-09-09
  • Redis如何安裝部署(單節(jié)點(diǎn))

    Redis如何安裝部署(單節(jié)點(diǎn))

    這篇文章主要介紹了Redis如何安裝部署(單節(jié)點(diǎn))問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 阿里Tair分布式鎖與Redis分布式鎖的實(shí)現(xiàn)區(qū)別

    阿里Tair分布式鎖與Redis分布式鎖的實(shí)現(xiàn)區(qū)別

    本文給大家介紹阿里Tair分布式鎖與Redis分布式鎖的實(shí)現(xiàn)區(qū)別解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-04-04
  • mac下redis安裝、設(shè)置、啟動(dòng)停止方法詳解

    mac下redis安裝、設(shè)置、啟動(dòng)停止方法詳解

    這篇文章主要介紹了mac下redis安裝、設(shè)置、啟動(dòng)停止方法詳解,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

夏河县| 台安县| 乐安县| 蓝山县| 邯郸县| 永城市| 广安市| 包头市| 大名县| 厦门市| 区。| 珠海市| 射洪县| 育儿| 包头市| 呼图壁县| 出国| 泸水县| 张北县| 青田县| 吉首市| 高青县| 荣成市| 鹤山市| 通许县| 望城县| 朝阳市| 昔阳县| 鸡西市| 东乌珠穆沁旗| 鲁山县| 满洲里市| 泽库县| 京山县| 南昌县| 峨山| 资源县| 博兴县| 府谷县| 合江县| 青田县|