java - 从不同的应用程序读取 Redis 中的数据

标签 java spring redis spring-data-jpa spring-data

我们正在使用 serviceA 从数据库中提取数据并将其放入 redis(我们正在使用 Spring data/Jedis 和方法 saveAll)。

还有一个serviceB需要从同一个redis实例中获取所有对象。

serviceA 的对象结构与serviceB 完全相同。我们遇到问题,因为Servicea的工作正常,但是服务b用spring数据提供的方法findall()提取所有数据,但它们都是无效的。

注意:我们做了一个测试,从serviceB加载了所有的数据,所以我们得到了所有的对象,没有任何问题。我可以从 redis 上的两个哈希中看到的唯一区别是当我们从 serviceA 加载数据时自动生成的字段 _class。

你能给我一个人吗?

最佳答案

确保在 serviceA 之间序列化 key 的方式一致和 serviceB .对我来说,这听起来像 serviceA正在为给定的序列化 key 写入数据,然后是 serviceB尝试为不同的序列化 key 获取数据。例如,如果您在“serviceA”和“serviceB”中都使用 Jackson,请确保以相同的方式配置它。

Redis 本质上是一个分布式 Map<String, String> ,所以如果serviceA 有差异序列化数据以及如何 serviceB序列化数据(例如,其中一个将类名存储在序列化对象中,而另一个不存储它),您最终会得到不同的 String相同 Java 键对象的键(并且读取数据的服务将得到 null 作为对 findAll 的响应,因为 Redis 中没有存储它请求的键)。

关于java - 从不同的应用程序读取 Redis 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52563880/

相关文章:

java - 失败步骤的 Spring 批处理作业退出状态

node.js - laravel 5.2 自动触发广播事件

redis - 从Redis流中删除一系列条目

lua - Redis lua什么时候才能真正用上呢?

Java进程命令结果无法捕获结果

java - 如何通过属性文件访问Struts框架上数组列表的值

java - 将 JobLaunchingGateway 与 spring-batch 和 spring-integration 一起使用抛出 DestinationResolutionException

java - 从两个列表中删除不重复的对象

java - 表格未显示图像

java - Spring 和返回 protected 资源