我正在使用 Redisson 的 RMapCache 來處理應用程序中的一些分布式集合。這些集合中的密鑰應該在一段時間后過期,因此在添加密鑰時,我設置了 TTL:RMapCache<String, MyClass> cacheMap = GetMap("test");cacheMap.put("DTO1", myClassInstance, 20, TimeUnit.SECONDS);因此,在 20 秒后,密鑰應過期。如果進程在過期時間戳之前未終止,則此方法非常有效。但是,如果由于任何原因進程死亡,則永遠不會清除密鑰,這意味著逐出由 Java 進程中的 Redisson 處理,而不是由 Redis 本身處理。有沒有辦法讓 Redisson 使用 Redis 的內置 EXPIRE 功能?因此,在 Map 中插入的進程不負責密鑰逐出。我發現當前的 redisson 實現非常脆弱。
1 回答

九州編程
TA貢獻1785條經驗 獲得超4個贊
一旦在崩潰后創建了相同的RMapCache對象,它就會啟動逐出調度程序,從而從Redis清除過期的條目。
如果只想依靠 Redis 逐出過程,則使用 RBucket 對象。Redis 不提供 TTL 的映射條目過期。
添加回答
舉報
0/150
提交
取消