美團(tuán)面試官:生成訂單后一段時(shí)間不支付訂單會(huì)自動(dòng)關(guān)閉的功能該如何實(shí)現(xiàn)?越詳細(xì)越好~
不點(diǎn)藍(lán)字,我們哪來(lái)故事?

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

正文如下:
# 業(yè)務(wù)場(chǎng)景
# 實(shí)現(xiàn)思路
# 開(kāi)啟 Redis key 過(guò)期提醒
K:keyspace 事件,事件以 keyspace@ 為前綴進(jìn)行發(fā)布
E:keyevent 事件,事件以 keyevent@ 為前綴進(jìn)行發(fā)布
g:一般性的,非特定類(lèi)型的命令,比如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”意味著所有事件
# 引入依賴(lài)
<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)聽(tīng)所有db的過(guò)期事件__keyevent@*__:expired" */ 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); }}往期推薦
下方二維碼關(guān)注我

技術(shù)草根,堅(jiān)持分享?編程,算法,架構(gòu)

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

評(píng)論
圖片
表情

