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

Redis過期監(jiān)聽機制,訂單超時自動取消方式

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

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

一、功能介紹

1. redis過期監(jiān)聽:當數據設置了過期時間,redis會根據某些機制去時時監(jiān)聽過期的數據 

2. 應用場景: 商城中未支付過期的訂單、通知(當然也可以用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. 關閉redis啟動窗口,在redis安裝的目錄下找到start.bat重啟redis (如圖下)

4. 在SpringBoot集成使用

  • 1、引入redis相關依賴(如圖下)
        <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實例化
        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)聽類,實現onMessage方法接收過去redis數據
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);
    }

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

  • 5、數據過期后,進入Redis過期監(jiān)聽方法,打印過期數據從而實現業(yè)務

總結

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

相關文章

  • 基于redis分布式鎖實現秒殺功能

    基于redis分布式鎖實現秒殺功能

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

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

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

    Redis+MQ高并發(fā)秒殺的技術方案與實現

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

    redis啟動停止,查看redis端口實現方式

    文章主要講述了如何查看Redis進程、停止Redis以及使用配置文件啟動Redis集群和Sentinel哨兵的方法,并提到可以通過兩種方法后臺啟動Redis服務,作者表示這些是個人經驗,希望能為大家提供參考
    2026-05-05
  • Redis中刪除策略的幾種實現方式

    Redis中刪除策略的幾種實現方式

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

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

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

    Redis中的List結構從使用到原理分析

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

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

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

    阿里Tair分布式鎖與Redis分布式鎖的實現區(qū)別

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

    mac下redis安裝、設置、啟動停止方法詳解

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

最新評論

湘西| 星子县| 武乡县| 罗甸县| 翼城县| 阿克陶县| 大安市| 颍上县| 龙泉市| 化德县| 伊金霍洛旗| 天柱县| 青州市| 东台市| 靖州| 湘乡市| 乌兰察布市| 周至县| 上杭县| 香港 | 柳州市| 潜江市| 黄石市| 沧源| 邛崃市| 桐庐县| 康定县| 东至县| 潼关县| 濮阳县| 柞水县| 洮南市| 开封县| 夏河县| 延津县| 平昌县| 竹北市| 平泉县| 朝阳县| 木兰县| 永兴县|