Перекрестная совместимость между клиентами Jedis и Redisson - PullRequest
0 голосов
/ 24 апреля 2020

У нас есть два приложения, которые используют один и тот же кластер 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.

1 Ответ

0 голосов
/ 09 мая 2020

Использование StringCodec совместимо с StringSerializer

...