From 9176499fdecf608bc0fcb25c259de86747da7d81 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Tue, 18 Jul 2023 08:27:30 +0300 Subject: [PATCH] Improvement - the scope of key event subscriptions reduced for RLiveObjectService object. Now it uses key-space channel. #5180 --- .../java/org/redisson/RedissonLiveObjectService.java | 11 +++++++---- .../org/redisson/RedissonLiveObjectServiceTest.java | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/redisson/src/main/java/org/redisson/RedissonLiveObjectService.java b/redisson/src/main/java/org/redisson/RedissonLiveObjectService.java index 92ab0206b..b72b9eeeb 100644 --- a/redisson/src/main/java/org/redisson/RedissonLiveObjectService.java +++ b/redisson/src/main/java/org/redisson/RedissonLiveObjectService.java @@ -73,12 +73,15 @@ public class RedissonLiveObjectService implements RLiveObjectService { this.seachEngine = new LiveObjectSearch(commandExecutor); if (commandExecutor.getServiceManager().getLiveObjectLatch().compareAndSet(false, true)) { - RPatternTopic topic = new RedissonPatternTopic(StringCodec.INSTANCE, commandExecutor, "__keyevent@*:expired"); + String pp = "__keyspace@" + commandExecutor.getServiceManager().getConfig().getDatabase() + "__:redisson_live_object:*"; + String prefix = pp.replace(":redisson_live_object:*", ""); + RPatternTopic topic = new RedissonPatternTopic(StringCodec.INSTANCE, commandExecutor, pp); topic.addListenerAsync(String.class, (pattern, channel, msg) -> { - if (msg.contains("redisson_live_object:")) { - Class entity = resolveEntity(msg); + if (msg.equals("expired")) { + String name = channel.toString().replace(prefix, ""); + Class entity = resolveEntity(name); NamingScheme scheme = commandExecutor.getObjectBuilder().getNamingScheme(entity); - Object id = scheme.resolveId(msg); + Object id = scheme.resolveId(name); deleteExpired(id, entity); } }); diff --git a/redisson/src/test/java/org/redisson/RedissonLiveObjectServiceTest.java b/redisson/src/test/java/org/redisson/RedissonLiveObjectServiceTest.java index addb0a2ed..dce175e59 100644 --- a/redisson/src/test/java/org/redisson/RedissonLiveObjectServiceTest.java +++ b/redisson/src/test/java/org/redisson/RedissonLiveObjectServiceTest.java @@ -1727,7 +1727,7 @@ public class RedissonLiveObjectServiceTest extends BaseTest { .randomPort() .randomDir() .notifyKeyspaceEvents( - RedisRunner.KEYSPACE_EVENTS_OPTIONS.E, + RedisRunner.KEYSPACE_EVENTS_OPTIONS.K, RedisRunner.KEYSPACE_EVENTS_OPTIONS.x) .run();