【发布时间】:2020-08-08 08:18:31
【问题描述】:
我们有两个应用程序使用同一个 redis 缓存集群。一个应用程序(比如 App1)使用 Jedis,另一个(比如 App2)使用 Redisson。现在我们可以假设两个应用程序都可以读取和写入 Java 对象到缓存中,尽管我们最终可能会由 App2(使用 Redisson)单独进行写入。
我的问题是 Redisson 编写的对象是否可以被 Jedis 读取(反之亦然)在序列化和反序列化方面。
我现在对这两个客户都有以下理解。寻找相同的验证和/或使它们兼容的方法。
- Redisson 客户端有 API 可以使用内部序列化和反序列化直接存储 java 对象,而 Jedis 没有。
- 序列化和反序列化过程可以在 Redisson 中进行配置,因此我们可以在 App1 中使用与 Jedis 相同的机制。
我很确定这应该是可能的,因为 Redis 作为一个外部缓存和分布式系统应该与使用相同或不同编程语言的客户端库无关。
更新:App1 使用 RedisTemplate 来使用配置了 StringSerializer 的 Jedis 客户端。此外,Redisson 提供了设置编解码器的配置,其中 Jackson 是其中一个选项。使用 Jackson,Redis 中保存的值是一个 json 字符串,唯一需要注意的是它存储了一个 @class 属性,该属性在使用 Jedis 的 Jackson 对象映射器反序列化时失败。
【问题讨论】:
标签: caching serialization redis jedis redisson