2016-11-16 34 views
1

我有Redis客戶訂閱[email protected]__:expired通知。它完美,或者當鍵通過自身期滿(TTL達到),或者當我手動到期它們與若干秒大於0,像這樣:Redis訂戶未通過EXPIRE密鑰通知0

EXPIRE myKey 1 

訂戶看到expired事件,因此可以採取一些行動。

但是,如果我想手動刪除關鍵有用戶通知,我用EXPIRE以0作爲秒數:

EXPIRE myKey 0 

鍵被刪除,而用戶沒有收到任何東西。

我在文檔中看不到與此相關的任何內容。誰能解釋這種行爲?

回答

1

通過查看源代碼(expire.c,〜252),將過期值設置爲< = 0(或者在過去使用EXPIREAT時)會導致刪除密鑰而不是過期(和相應地,DEL通知而不是EXPIRED事件)。

這種行爲確實沒有記錄,如果您可以提交修復文檔回購的PR(https://github.com/antirez/redis-doc),這將是一件好事。

+0

[PR submitted](https://github.com/antirez/redis-doc/pull/774)。謝謝伊塔馬爾。 – marcv

+0

非常歡迎和歡迎社區;) –