如果我有以下对象以哈希形式存储在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)
如何反序列化流水线结果?
答案 0 :(得分:0)
我做了hMGet,而不是hGetAll。在这种情况下,结果中的每个对象都是List。然后我反序列化了列表中的每个项目。对我有用
但是我希望spring-redis处理反序列化部分是否有更好的方法