需求
處理訂單下單後30分鐘未付款自動取消
解決方案
利用redis中key自動過期機制,提交訂單時將訂單編號寫入redis,並設定30分鐘的過期時間,當訂單過期後,取到過期的key然後做業務處理。
功能開發
1、開啟redis過期提醒
本次使用lunix版本redis。修改redis.conf 中1061行中【notify-keyspace-events ""】修改為【notify-keyspace-events ex】
相關配置引數說明
k:keyspace事件,事件以__keyspace@__為字首進行發布;e:keyevent事件,事件以__keyevent@
__為字首進行發布;
g:一般性的,非特定型別的命令,比如del,expire,rename等;
$:字串特定命令;
l:列表特定命令;
s:集合特定命令;
h:雜湊特定命令;
z:有序集合特定命令;
x:過期事件,當某個鍵過期並刪除時會產生該事件;
e:驅逐事件,當某個鍵因maxmemore策略而被刪除時,產生該事件;
a:g$lshzxe的別名,因此」ake」意味著所有事件。
2、重啟redis服務
3、**中設定redis配置
@configurationpublic
class
redislistenerconfig
}
/*** 監聽所有db的過期事件__keyevent@*__:expired" */
@component
@slf4j
public
class rediskeyexpirationlistener extends
keyexpirationeventmessagelistener
@autowired
shorderservice shorderservice;
/*** 針對redis資料失效事件,進行資料處理
* @param
message
* @param
pattern
*/@override
public
void onmessage(message message, byte
pattern)
}}
《轉》redis key過期事件實現過期提醒
redis自2.8.0之後版本提供 keyspace notifications 功能,允許客戶訂閱pub sub頻道,以便以某種方式接收影響redis資料集的事件。可能收到的事件的例子如下 所有影響給定鍵的命令。所有接收lpush操作的金鑰。所有金鑰在資料庫中過期0。因為 redis 目前的訂閱與...
Redis Key 過期策略
redis 官方提供的 conf 中6中過期策略的具體方式。redis 中的預設的過期策略是volatile lru 設定方式 config set maxmemory policy volatile lru maxmemory policy 六種方式 volatile lru 只對設定了過期時間的...
Redis Key過期通知
概述 鍵空間通知使得客戶端可以通過訂閱頻道或模式,來接收那些以某種方式改動了 redis 資料集的事件。如redis資料庫中鍵的過期事件也是通過訂閱功能實現。本文主要基於azure paas redis演示相關功能的具體實現。配置因為開啟鍵空間通知功能需要消耗一些 cpu 所以在預設配置下,該功能處...