我正在使用 Redisson 的 RMapCache 來處理應(yīng)用程序中的一些分布式集合。這些集合中的密鑰應(yīng)該在一段時(shí)間后過期,因此在添加密鑰時(shí),我設(shè)置了 TTL:RMapCache<String, MyClass> cacheMap = GetMap("test");cacheMap.put("DTO1", myClassInstance, 20, TimeUnit.SECONDS);因此,在 20 秒后,密鑰應(yīng)過期。如果進(jìn)程在過期時(shí)間戳之前未終止,則此方法非常有效。但是,如果由于任何原因進(jìn)程死亡,則永遠(yuǎn)不會(huì)清除密鑰,這意味著逐出由 Java 進(jìn)程中的 Redisson 處理,而不是由 Redis 本身處理。有沒有辦法讓 Redisson 使用 Redis 的內(nèi)置 EXPIRE 功能?因此,在 Map 中插入的進(jìn)程不負(fù)責(zé)密鑰逐出。我發(fā)現(xiàn)當(dāng)前的 redisson 實(shí)現(xiàn)非常脆弱。
如果進(jìn)程終止,Redisson 緩存映射不會(huì)逐出
三國紛爭(zhēng)
2022-08-03 16:28:09