如何通过自定义转换器和流水线使用Spring Data Redis for Hash

时间:2018-08-31 01:52:34

标签: java-8 spring-data-redis

如果我有以下对象以哈希形式存储在redis中

# put this into ~/.gdbinit:
define hook-next
  info locals
end

如果@RedisHash("animals") public class Animal implements Serializable { private static final long serialVersionUID = 5905326889964459171L; @Id private String id; @Indexed private String type; @Indexed private String location; 中有1000个条目 并且我想-“在所有位置查找Animal01类型的动物”,然后我在做-

smembers animals:type:animal01

“结果”中的每个对象的类型为LinkedHashMap。我尝试使用Set<String> members = stringRedisTemplate.opsForHash().members("animals:type:animal01"); List<Object> result = stringRedisTemplate.executePipelined(new RedisCallback<Object>() { @Override public Object doInRedis(RedisConnection connection) throws DataAccessException { for (String member : members) { connection.hGetAll(String.format("animals:%s", member).getBytes()); } return null; } }); 将此转换为Animal,但似乎ObjectHashMapper仅适用于Map。我无法使其与Map一起使用

(我正在使用spring-boot-starter-data-redis 1.5.14.RELEASE,其中包含jedis2.9.0)

如何反序列化流水线结果?

1 个答案:

答案 0 :(得分:0)

我做了hMGet,而不是hGetAll。在这种情况下,结果中的每个对象都是List。然后我反序列化了列表中的每个项目。对我有用

但是我希望spring-redis处理反序列化部分是否有更好的方法