美團(tuán)面試官:訂單自動(dòng)關(guān)閉的功能該如何實(shí)現(xiàn)?
點(diǎn)擊上方?藍(lán)字?關(guān)注我們!

每天 11 點(diǎn)更新文章,餓了點(diǎn)外賣,點(diǎn)擊 ??《無(wú)門檻外賣優(yōu)惠券,每天免費(fèi)領(lǐng)!》

哈嘍,各位新來(lái)的小伙伴們,大家好!由于公眾號(hào)做了改版,為了保證公眾號(hào)的資源能準(zhǔn)時(shí)推送到你手里,大家記得將咱們的公眾號(hào)?加星標(biāo)置頂?,在此真誠(chéng)的表示感謝~ 正文如下:
# 業(yè)務(wù)場(chǎng)景
# 實(shí)現(xiàn)思路
# 開啟 Redis key 過(guò)期提醒
K:keyspace 事件,事件以 keyspace@ 為前綴進(jìn)行發(fā)布
E:keyevent 事件,事件以 keyevent@ 為前綴進(jìn)行發(fā)布
g:一般性的,非特定類型的命令,比如del,expire,rename等
$:字符串特定命令
l:列表特定命令
s:集合特定命令
h:哈希特定命令
z:有序集合特定命令
x:過(guò)期事件,當(dāng)某個(gè)鍵過(guò)期并刪除時(shí)會(huì)產(chǎn)生該事件
e:驅(qū)逐事件,當(dāng)某個(gè)鍵因 maxmemore 策略而被刪除時(shí),產(chǎn)生該事件
A:g$lshzxe的別名,因此”AKE”意味著所有事件
# 引入依賴
<dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-data-redisartifactId>dependency>
# 相關(guān)配置
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;public class RedisListenerConfig {RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {RedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(connectionFactory);return container;}}
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的過(guò)期事件__keyevent@*__:expired"*/public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {super(listenerContainer);}/*** 針對(duì) redis 數(shù)據(jù)失效事件,進(jìn)行數(shù)據(jù)處理* @param message* @param pattern*/public void onMessage(Message message, byte[] pattern) {// 獲取到失效的 key,進(jìn)行取消訂單業(yè)務(wù)處理String expiredKey = message.toString();System.out.println(expiredKey);}}
往期推薦

看完文章,餓了點(diǎn)外賣,點(diǎn)擊 ??《無(wú)門檻外賣優(yōu)惠券,每天免費(fèi)領(lǐng)!》
END
若覺得文章對(duì)你有幫助,隨手轉(zhuǎn)發(fā)分享,也是我們繼續(xù)更新的動(dòng)力。
長(zhǎng)按二維碼,掃掃關(guān)注哦
?「C語(yǔ)言中文網(wǎng)」官方公眾號(hào),關(guān)注手機(jī)閱讀教程??
目前收集的資料包括:?Java,Python,C/C++,Linux,PHP,go,C#,QT,git/svn,人工智能,大數(shù)據(jù),單片機(jī),算法,小程序,易語(yǔ)言,安卓,ios,PPT,軟件教程,前端,軟件測(cè)試,簡(jiǎn)歷,畢業(yè)設(shè)計(jì),公開課?等分類,資源在不斷更新中...


