У нас есть два приложения, которые используют один и тот же кластер Redis-кеша. Одно из приложений (скажем, App1) использует Jedis, а другое (скажем, App2) использует Redisson. На данный момент мы можем предположить, что оба приложения могут читать и записывать Java объекты в кэш, хотя мы можем в конечном итоге сделать запись только App2 (с Redisson).
Мой вопрос здесь заключается в том, записаны ли объекты Redisson может быть прочитан Jedis (и наоборот) в терминах сериализации и десериализации.
У меня сейчас есть следующее понимание относительно обоих клиентов. Ищите валидацию и / или способы сделать их совместимыми.
- У клиента Redisson есть API для хранения java объектов напрямую, используя внутреннюю сериализацию и десериализацию, в то время как Jedis этого не делает.
- Процесс сериализации и десериализации может быть настраиваем в Redisson, поэтому мы можем использовать тот же механизм в App1 с Jedis.
Я совершенно уверен, что это должно быть возможно, потому что Redis является внешним Кэш и распределенная система должны быть агрегированы c между клиентскими библиотеками на одном и том же или разных языках программирования.
Обновление: App1 использует RedisTemplate для использования клиента Jedis, который настроен с помощью StringSerializer. Кроме того, Redisson предоставляет конфигурацию для установки кода c, где Джексон является одним из вариантов. Используя Джексона, значение, сохраненное в Redis, представляет собой строку json, с единственным предупреждением, что в нем хранится свойство @class, которое не удается десериализовать с помощью сопоставителя объектов Джексона с использованием Jedis.