Java Redis Hash 获取 Pod 对象报错解决方法

在使用 Java Redis Template 获取 Hash 中存储的 Pod 对象时,可能会遇到以下报错:

public Map<String, pod> getPods(String key){
        Map<Object, Object> entries = redisTemplate.opsForHash().entries(nxConfig.getKeyPrefix() + key);
        return entries.entrySet().stream().collect(Collectors.toMap(entry -> entry.getKey().toString(), Map.Entry::getValue));
    }

该报错通常是因为 Redis 中存储的 Hash 数据类型不匹配导致的。解决方法是将 Map<Object, Object> 改为 Map<String, pod>,并在 stream 中使用 entry.getKey().toString(),如下所示:

public Map<String, pod> getPods(String key){
    Map<String, pod> entries = new HashMap<>();
    Map<Object, Object> map = redisTemplate.opsForHash().entries(nxConfig.getKeyPrefix() + key);
    for (Map.Entry<Object, Object> entry : map.entrySet()) {
        String hashKey = entry.getKey().toString();
        pod value = (pod) entry.getValue();
        entries.put(hashKey, value);
    }
    return entries;
}

解释:

  1. Map<Object, Object> 无法直接转换为 Map<String, pod>,因此需要手动遍历 Map<Object, Object>,将 key 转为 String 类型,value 转为 pod 类型,并放入新的 Map<String, pod> 中。
  2. entry.getKey().toString() 用于将 Object 类型的 key 转为 String 类型。
  3. pod value = (pod) entry.getValue(); 用于将 Object 类型的 value 转为 pod 类型。

通过以上修改,即可成功获取 Redis Hash 中存储的 Pod 对象。

Java Redis Hash 获取 Pod 对象报错解决方法

原文地址: https://www.cveoy.top/t/topic/oBKi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录