Service1 работает в узле Node1 Service1 добавляет пользовательские данные в Redis Bucket «UserBucket»
Службе 2, работающей в узле 2, службе 2 необходимо получить последние пользовательские данные из корзины Redis «Пользователи».
Я поддерживаю одноэлементный экземпляр org.redisson.api.RedissonClient внутри Service2.
Первоначально мой getCache() выглядел как
private static RMap<String, Map<String,User>> getCache(String bucketName) {
return redissonCacheClient.getMap(bucketName);
}
Затем я посмотрел на реализацию getMap() внутри org.redisson.api.RedissonClient.
return new RedissonMap<K, V>(connectionManager.getCommandExecutor(), name, this, null);
Кажется, что каждый вызов getMap(..) создает новый экземпляр RedissonMap(..)
Итак, теперь я поддерживаю один экземпляр RMap следующим образом (вместо того, чтобы каждый раз вызывать getMap())...
private static RMap<String, Map<String,User>> getCache(String bucketName) {
RMap<String, Map<String,User>> userMap;
if (cacheByOrg.containsKey(bucketName)) {
userMap = cacheByOrg.get(bucketName);
} else {
userMap = redissonCacheClient.getMap(bucketName);
cacheByOrg.put(bucketName, userMap);
}
return geoFenceMap;
}
Но теперь я подозреваю, что не получаю последние данные из кеша.
Было бы здорово, если бы кто-нибудь подтвердил правильность использования клиента Redisson.
Можно ли вызывать getMap() много раз (будет ли он подключаться к одному и тому же экземпляру экземпляра кэша внутри, чтобы я всегда получал последние данные? Если да, то может ли создание такого количества экземпляров RedissonMap привести к накладным расходам OOM/GC?
В противном случае я должен вызвать его только один раз и сохранить локальную копию, как показано?