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

redis開(kāi)啟過(guò)期監(jiān)聽(tīng)的實(shí)現(xiàn)示例

 更新時(shí)間:2025年11月18日 10:05:37   作者:百***2714  
在Java項(xiàng)目中使用Redis的過(guò)期監(jiān)聽(tīng)功能來(lái)實(shí)現(xiàn)訂單未付款到期自動(dòng)取消,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

java項(xiàng)目中,場(chǎng)景:訂單沒(méi)有付款到期取消訂單,使用的是redis過(guò)期監(jiān)聽(tīng)來(lái)做的,做個(gè)筆記!首先使用該功能需要下載2.8.0及以上的版本,這一部分詳細(xì)內(nèi)容可以訪問(wèn)redis官網(wǎng):http://redis.io/topics/notifications ,以下是我總結(jié)的:

第一步:配置redis的過(guò)期失效監(jiān)聽(tīng),需要修改redis.conf配置文件,找到 EVENT NOTIFICATION (事件通知)這個(gè)配置
notify-keyspace-events "" 修改為 notify-keyspace-events "Ex"

參數(shù)解釋?zhuān)磁渲梦募蛘吖倬W(wǎng)都有詳細(xì)解釋?zhuān)缦拢?/p>

############################# EVENT NOTIFICATION ##############################

# 鍵空間通知使得客戶(hù)端可以通過(guò)訂閱頻道或模式,來(lái)接收那些以某種方式改動(dòng)了 Redis 數(shù)據(jù)集的事件。
# 因?yàn)殚_(kāi)啟鍵空間通知功能需要消耗一些 CPU ,所以在默認(rèn)配置下,該功能處于關(guān)閉狀態(tài)。
# notify-keyspace-events 的參數(shù)可以是以下字符的任意組合,
# 它指定了服務(wù)器該發(fā)送哪些類(lèi)型的通知:
# K 鍵空間通知,所有通知以 __keyspace@__ 為前綴
# E 鍵事件通知,所有通知以 __keyevent@__ 為前綴
# g DEL 、 EXPIRE 、 RENAME 等類(lèi)型無(wú)關(guān)的通用命令的通知
# $ 字符串命令的通知
# l 列表命令的通知
# s 集合命令的通知
# h 哈希命令的通知
# z 有序集合命令的通知
# x 過(guò)期事件:每當(dāng)有過(guò)期鍵被刪除時(shí)發(fā)送
# e 驅(qū)逐(evict)事件:每當(dāng)有鍵因?yàn)?maxmemory 政策而被刪除時(shí)發(fā)送
# A 參數(shù) g$lshzxe 的別名
# 輸入的參數(shù)中至少要有一個(gè) K 或者 E,否則的話(huà),不管其余的參數(shù)是什么,都不會(huì)有任何 通知被分發(fā)。

第二步: 重新啟動(dòng)redis,沒(méi)什么好說(shuō)的,修改配置文件以及啟動(dòng)redis不會(huì)自行度娘

第三步:驗(yàn)證配置是否成功

  1. 運(yùn)行redis客戶(hù)端:
    redis-cli
  2. 選擇你要監(jiān)聽(tīng)的庫(kù) @后面的值,redis默認(rèn)連接0號(hào)庫(kù),這里不做修改了,運(yùn)行監(jiān)聽(tīng)命令:
    psubscribe __keyevent@0__:expired
  3. 在啟動(dòng)一個(gè)客戶(hù)端redis-cli,這里也是默認(rèn)0號(hào)庫(kù),不做修改,設(shè)置一個(gè)10秒過(guò)期的key:
    SETEX mykey 10 redis
    拓展:Redis Setex 命令為指定的 key 設(shè)置值及其過(guò)期時(shí)間。如果 key 已經(jīng)存在, SETEX 命令將會(huì)替換舊的值。
  4. 10秒后,可以看到監(jiān)聽(tīng)端口可以接收到失效的redis的key。如圖

springboot 項(xiàng)目集成ridis配置過(guò)期監(jiān)聽(tīng):

1.引入redis依賴(lài),這塊不做過(guò)多解釋?zhuān)粫?huì)的去搜集成reids

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

2.創(chuàng)建兩個(gè)類(lèi),第一個(gè)類(lèi)配置 RedisListenerConfig 實(shí)現(xiàn)監(jiān)聽(tīng) Redis key 過(guò)期時(shí)間,我這里是監(jiān)聽(tīng)所有db的過(guò)期事件__keyevent@*__:expired,根據(jù)自己的業(yè)務(wù)需求自行配置,@幾號(hào)庫(kù),@*是所有
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.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;

/**
 * @ClassName RedisListenerConfig
 * @Description redis監(jiān)聽(tīng)配置
 * @Author cl
 * @Date 2021-09-09 10:45
 */
@Configuration
public class RedisListenerConfig {
    @Autowired
    RedisListen redisListen;

    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory factory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(factory);
        container.addMessageListener(redisListen, new PatternTopic("__keyevent@*__:expired"));
        return container;
    }
}

第二個(gè)類(lèi),定義監(jiān)聽(tīng)器 RedisListen,監(jiān)聽(tīng) Redis key 過(guò)期事件,針對(duì) Redis 數(shù)據(jù)失效事件,進(jìn)行業(yè)務(wù)處理
RedisListen:

import com.tanghe.common.constant.RedisConstants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.stereotype.Component;

/**
 * @ClassName RedisListen
 * @Description RedisListen
 * @Author cl
 * @Date 2021-09-09 10:46
 */
@Slf4j
@Component
public class RedisListen implements MessageListener {
    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @Override
    public void onMessage(Message message, byte[] pattern) {
        String expiredKey = message.toString();

        log.info("失效的redis是:"+expiredKey);
        RedisSerializer<?> serializer = redisTemplate.getValueSerializer();
        String channel = String.valueOf(serializer.deserialize(message.getChannel()));
        String body = String.valueOf(serializer.deserialize(message.getBody()));
        log.info("channel==="+channel+"-----------------"+"body === "+body);
        //key過(guò)期監(jiān)聽(tīng),在處理業(yè)務(wù)之前校驗(yàn)下自己業(yè)務(wù)的key和監(jiān)聽(tīng)的key以及庫(kù)號(hào)
        if("__keyevent@0__:expired".equals(channel) && body.indexOf(“自己業(yè)務(wù)的key”) != -1){
            log.info("進(jìn)來(lái)了哈");
            //這里寫(xiě)需要處理的業(yè)務(wù)

        }

    }
}

附redis常用指令,會(huì)持續(xù)更新!??!

windows

redis設(shè)置開(kāi)機(jī)自啟動(dòng):redis-server --service-install redis.windows-service.conf --loglevel verbose
redis啟動(dòng)命令:redis-server redis.windows.conf
redis卸載命令:redis-server --service-uninstall
redis啟動(dòng)服務(wù)命令:redis-server --service-start
redis停止服務(wù)命令:redis-server --service-stop
進(jìn)入redis命令:redis-cli.exe -h 127.0.0.1 -p 6379
進(jìn)入redis使用密碼命令:redis-cli.exe -h 127.0.0.1 -p 6379 -a password

到此這篇關(guān)于redis開(kāi)啟過(guò)期監(jiān)聽(tīng)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)redis開(kāi)啟過(guò)期監(jiān)聽(tīng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • redis單節(jié)點(diǎn)安裝與配置方式

    redis單節(jié)點(diǎn)安裝與配置方式

    這篇文章主要介紹了redis單節(jié)點(diǎn)安裝與配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 基于Redis分布式鎖的實(shí)現(xiàn)代碼

    基于Redis分布式鎖的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Redis分布式鎖的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • redis快照模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    redis快照模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了redis快照模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Redis分布式鎖如何設(shè)置超時(shí)時(shí)間

    Redis分布式鎖如何設(shè)置超時(shí)時(shí)間

    這篇文章主要介紹了Redis分布式鎖如何設(shè)置超時(shí)時(shí)間,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Redis集群修改密碼方式

    Redis集群修改密碼方式

    本文詳細(xì)介紹了三種不重啟集群和需要重啟集群的Redis配置更新方法,幫助用戶(hù)高效管理Redis集群配置
    2026-06-06
  • redis-copy使用6379端口無(wú)法連接到Redis服務(wù)器的問(wèn)題

    redis-copy使用6379端口無(wú)法連接到Redis服務(wù)器的問(wèn)題

    這篇文章主要介紹了redis-copy使用6379端口無(wú)法連接到Redis服務(wù)器的問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 內(nèi)存型數(shù)據(jù)庫(kù)Redis持久化小結(jié)

    內(nèi)存型數(shù)據(jù)庫(kù)Redis持久化小結(jié)

    redis是一個(gè)支持持久化的內(nèi)存數(shù)據(jù)庫(kù),也就是說(shuō)redis需要經(jīng)常將內(nèi)存中的數(shù)據(jù)同步到磁盤(pán)來(lái)保證持久化.redis支持四種持久化方式,一是 Snapshotting(快照)也是默認(rèn)方式,二是Append-only file(縮寫(xiě)aof)的方式,三是虛擬內(nèi)存方式,四是diskstore方式.今天我們總結(jié)下前2種。
    2017-09-09
  • redis實(shí)現(xiàn)排行榜的簡(jiǎn)單方法

    redis實(shí)現(xiàn)排行榜的簡(jiǎn)單方法

    這篇文章主要給大家介紹了關(guān)于redis實(shí)現(xiàn)排行榜的簡(jiǎn)單方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • redis批量刪除指定前綴key四種方法(收藏)

    redis批量刪除指定前綴key四種方法(收藏)

    這篇文章主要介紹了redis批量刪除指定前綴key四種方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-03-03
  • windows下通過(guò)批處理腳本啟動(dòng)redis的操作

    windows下通過(guò)批處理腳本啟動(dòng)redis的操作

    本文主要給大家介紹了windows下通過(guò)批處理腳本啟動(dòng)redis的操作,windows下redis啟動(dòng),需要進(jìn)入redis安裝目錄,然后shift+右鍵,選擇“在此處打開(kāi)命令窗口”,然后輸入redis-server.exe redis.conf,就可以啟動(dòng)redis了,文中有詳細(xì)的圖文參考,感興趣的朋友可以參考下
    2023-12-12

最新評(píng)論

扎囊县| 平泉县| 福泉市| 密山市| 顺昌县| 青川县| 阿拉善左旗| 宝兴县| 霍林郭勒市| 定日县| 泸溪县| 安丘市| 肃北| 清远市| 阿坝县| 扬州市| 云梦县| 盐源县| 庐江县| 扶绥县| 梁平县| 巫山县| 鹿邑县| 安西县| 正蓝旗| 翁源县| 仁怀市| 扎兰屯市| 九龙坡区| 石阡县| 五河县| 东丰县| 峡江县| 瓦房店市| 白银市| 潜山县| 紫云| 辉县市| 舞钢市| 竹北市| 于田县|