日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Spring Boot監(jiān)聽Redis Key失效事件實現(xiàn)定時任務(wù)的示例

瀏覽:28日期:2023-09-11 14:02:35

業(yè)務(wù)場景

我們以訂單功能為例說明下:

生成訂單后一段時間不支付訂單會自動關(guān)閉。最簡單的想法是設(shè)置定時任務(wù)輪詢,但是每個訂單的創(chuàng)建時間不一樣,定時任務(wù)的規(guī)則無法設(shè)定,如果將定時任務(wù)執(zhí)行的間隔設(shè)置的過短,太影響效率。

還有一種想法,在用戶進入訂單界面的時候,判斷時間執(zhí)行相關(guān)操作。方式可能有很多,在這里介紹一種監(jiān)聽 Redis 鍵值對過期時間來實現(xiàn)訂單自動關(guān)閉。

實現(xiàn)思路

在生成訂單時,向 Redis 中增加一個 KV 鍵值對,K 為訂單號,保證通過 K 能定位到數(shù)據(jù)庫中的某個訂單即可,V 可為任意值。

假設(shè),生成訂單時向 Redis 中存放 K 為訂單號,V 也為訂單號的鍵值對,并設(shè)置過期時間為 30 分鐘,如果該鍵值對在 30 分鐘過期后能夠發(fā)送給程序一個通知,或者執(zhí)行一個方法,那么即可解決訂單關(guān)閉問題。

實現(xiàn):通過監(jiān)聽 Redis 提供的過期隊列來實現(xiàn),監(jiān)聽過期隊列后,如果 Redis 中某一個 KV 鍵值對過期了,那么將向監(jiān)聽者發(fā)送消息,監(jiān)聽者可以獲取到該鍵值對的 K,注意,是獲取不到 V 的,因為已經(jīng)過期了,這就是上面所提到的,為什么要保證能通過 K 來定位到訂單,而 V 為任意值即可。拿到 K 后,通過 K 定位訂單,并判斷其狀態(tài),如果是未支付,更新為關(guān)閉,或者取消狀態(tài)即可。

開啟 Redis key 過期提醒

修改 redis 相關(guān)事件配置。找到 redis 配置文件 redis.conf,查看 notify-keyspace-events 配置項,如果沒有,添加 notify-keyspace-events Ex,如果有值,則追加 Ex,相關(guān)參數(shù)說明如下:

K:keyspace 事件,事件以 keyspace@ 為前綴進行發(fā)布 E:keyevent 事件,事件以 keyevent@ 為前綴進行發(fā)布 g:一般性的,非特定類型的命令,比如del,expire,rename等 $:字符串特定命令 l:列表特定命令 s:集合特定命令 h:哈希特定命令 z:有序集合特定命令 x:過期事件,當(dāng)某個鍵過期并刪除時會產(chǎn)生該事件 e:驅(qū)逐事件,當(dāng)某個鍵因 maxmemore 策略而被刪除時,產(chǎn)生該事件 A:g$lshzxe的別名,因此”AKE”意味著所有事件

引入依賴

在 pom.xml 中添加 org.springframework.boot:spring-boot-starter-data-redis 依賴

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

相關(guān)配置

定義配置 RedisListenerConfig 實現(xiàn)監(jiān)聽 Redis key 過期時間

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.RedisMessageListenerContainer;@Configurationpublic class RedisListenerConfig { @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); return container; }}

定義監(jiān)聽器 RedisKeyExpirationListener,實現(xiàn) KeyExpirationEventMessageListener 接口,查看源碼發(fā)現(xiàn),該接口監(jiān)聽所有 db 的過期事件 keyevent@*:expired'

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;/** * 監(jiān)聽所有db的過期事件__keyevent@*__:expired' */@Componentpublic class RedisKeyExpirationListener extends KeyExpirationEventMessageListener { public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) { super(listenerContainer); } /** * 針對 redis 數(shù)據(jù)失效事件,進行數(shù)據(jù)處理 * @param message * @param pattern */ @Override public void onMessage(Message message, byte[] pattern) { // 獲取到失效的 key,進行取消訂單業(yè)務(wù)處理 String expiredKey = message.toString(); System.out.println(expiredKey); }}

到此這篇關(guān)于Spring Boot監(jiān)聽Redis Key失效事件實現(xiàn)定時任務(wù)的示例的文章就介紹到這了,更多相關(guān)Spring Boot Redis Key失效 內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91精品国产自产在线观看永久∴ | 日本综合视频| 亚洲成人精品| 激情五月综合| 亚洲视频www| 国产亚洲高清在线观看| 丝瓜av网站精品一区二区| 三级在线观看一区二区| 99精品视频精品精品视频| jiujiure精品视频播放| 久久久国产精品一区二区中文| 日本韩国欧美超级黄在线观看| 999国产精品永久免费视频app| 极品日韩av| 五月天久久网站| 亚洲一区国产一区| 青草av.久久免费一区| 久久精品伊人| 蜜桃视频欧美| 日本亚州欧洲精品不卡| 国产精品亚洲一区二区在线观看| 国产精品二区不卡| 在线精品视频在线观看高清| 桃色一区二区| 视频一区二区三区在线| 91嫩草精品| 国产精品香蕉| 欧美一区三区| 国产一区二区三区四区二区| 久久精品一区二区不卡| 日韩影院精彩在线| 精品视频久久| 欧美中文日韩| 福利一区和二区| 亚洲精品美女91| 在线天堂资源www在线污| 亚洲毛片网站| 久久九九国产| 欧美成a人片免费观看久久五月天| 欧美色图一区| 蜜桃久久久久| 午夜电影一区| 欧美一级网站| 亚洲a在线视频| 亚洲精品人人| 一区二区三区四区在线看| 欧美精品国产白浆久久久久| 亚洲一区免费| 成人免费网站www网站高清| 久久国产欧美日韩精品| 蜜臀久久99精品久久久久久9| 欧美天堂视频| 麻豆一区二区三| 欧美日韩中文| 青青草国产精品亚洲专区无| 免费在线观看一区二区三区| 国产精品99免费看| 久久青青视频| 国产黄大片在线观看| 日韩高清电影免费| 视频在线在亚洲| 久久不射中文字幕| 欧美在线首页| 亚洲综合国产| 亚洲91久久| 国产在线|日韩| 日韩毛片视频| 精品国产中文字幕第一页| 美女视频免费精品| 国内精品伊人| 波多野结衣久久精品| 理论片午夜视频在线观看| 欧美激情另类| 亚洲天堂久久| 香蕉国产精品| 亚洲精品一二三区区别| 久久国产精品成人免费观看的软件| 国内在线观看一区二区三区| 中文字幕人成乱码在线观看| 九九色在线视频| 99国产精品| 精品入口麻豆88视频| 视频国产精品| 国产精品视频首页| 色婷婷亚洲mv天堂mv在影片| 亚洲大片在线| 国产精品婷婷| 国产精品天天看天天狠| 一区二区精品伦理...| 婷婷综合激情| 欧美日韩免费观看一区=区三区| 亚洲三区欧美一区国产二区| 国产福利一区二区精品秒拍| 久久久久久久久久久妇女| 综合五月婷婷| 电影亚洲精品噜噜在线观看| 免费在线观看一区二区三区| 国产成人免费| 亚洲精品系列| 久久久久国产| 国产欧美另类| 亚洲小说春色综合另类电影| 成人欧美一区二区三区的电影| 欧美日一区二区在线观看| 国产香蕉精品| 综合日韩av| 日韩和欧美一区二区| 日本精品不卡| 久久免费精品| 日韩精品免费观看视频| 国产综合欧美| 国产福利片在线观看| 国产精品v一区二区三区| 国产亚洲毛片在线| 成人在线网站| 国产一区二区三区日韩精品| 亚洲精品无吗| 亚洲一区欧美二区| 欧美亚洲国产激情| 成人在线超碰| 男女男精品网站| 一级欧洲+日本+国产| 国产精品成久久久久| 精品视频91| 精品视频久久| 国产精品片aa在线观看| 日韩精品乱码av一区二区| 亚洲一区二区免费在线观看| 亚洲综合丁香| 免费的成人av| 日韩精品久久理论片| 欧美另类中文字幕| 国产精品成人国产| 国产精品片aa在线观看| 欧美激情三区| 国产精品99精品一区二区三区∴ | 亚洲激情偷拍| 黄色欧美日韩| 亚洲涩涩av| 日韩精品视频网站| 91大神在线观看线路一区| 国产精品国产三级在线观看| 国产一区二区三区四区大秀| 婷婷国产精品| 久久www成人_看片免费不卡| 一二三区精品| 丁香婷婷久久| 欧美日韩免费观看一区=区三区| 久久亚洲国产精品一区二区| 日本午夜精品| 精精国产xxxx视频在线野外| 久久不射网站| 国产精品大片免费观看| 日韩精品一卡| 日韩一二三区在线观看| 精品国产乱码久久久久久1区2匹| 欧美肉体xxxx裸体137大胆| 亚洲日本欧美| 色在线视频观看| 男女男精品视频网| 欧美激情日韩| 国产精品毛片在线| 久久99久久人婷婷精品综合| 激情综合亚洲| 国产精品久久亚洲不卡| 欧美福利专区| 国产精品亚洲产品| 影院欧美亚洲| 色综合五月天| 日本三级亚洲精品| 伊人久久成人| 日韩av有码| 国产精品久一| 亚洲精品伊人| 亚洲午夜av| 国产中文欧美日韩在线| 亚洲精品国产精品粉嫩| 欧美91视频| 偷拍精品精品一区二区三区| 国产亚洲一卡2卡3卡4卡新区| 欧美日韩中文字幕一区二区三区 | 久久精品亚洲人成影院 | 欧美~级网站不卡| 国产精品伦理久久久久久| 日韩国产一二三区| 成人日韩在线观看| 国产精品99一区二区三| 国产精品午夜一区二区三区| 最新亚洲国产| 亚洲字幕久久| 日韩1区2区3区| 亚洲精品一二| 四虎成人精品一区二区免费网站| 亚洲高清久久| 欧美日韩高清| 三级欧美韩日大片在线看| 好吊视频一区二区三区四区| 久久网站免费观看| 国产91一区| 国产视频一区欧美|