java - 如何在 Redis 中存储嵌套的 Hashmap?

标签 java redis hashmap

我想将网络 HashMap 存储在具有单个键的 Redis 中。

例如:

HashMap<String, HashMap<String,String>> map = new  HashMap<>();

请建议:

  • 有没有办法存储上述数据结构?
  • 我们怎样才能做到这一点?

最佳答案

Redis 目前不支持它。然而,除了rejson 之外,还有一种方法可以做到这一点。 .

您可以将其转换为 JSON 并存储在 Redis 中并检索。遵循我在 Jackson 中使用的实用方法。

将对象转换为字符串:

public static String stringify(Object object) {
    ObjectMapper jackson = new ObjectMapper();
    jackson.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
    try {
        return jackson.writeValueAsString(object);
    } catch (Exception ex) {
        LOG.log(Level.SEVERE, "Error while creating json: ", ex);
    }
    return null;
}

示例:stringify(obj);

将字符串转换为对象:

public static <T> T objectify(String content, TypeReference valueType) {
    try {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(Feature.WRITE_DATES_AS_TIMESTAMPS, false);
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS");
        dateFormat.setTimeZone(Calendar.getInstance().getTimeZone());
        mapper.setDateFormat(dateFormat);
        return mapper.readValue(content, valueType);
    } catch (Exception e) {
        LOG.log(Level.WARNING, "returning null because of error : {0}", e.getMessage());
        return null;
    }
}

示例:List<Object> list = objectify("Your Json", new TypeReference<List<Object>>(){})

您可以根据需要更新此方法。我确定,您知道如何在 Redis 中添加和更新。

关于java - 如何在 Redis 中存储嵌套的 Hashmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52255982/

相关文章:

java - 使用相对于配置文件的路径引用 Spring 属性文件

java - 向 HashMap 添加集合

java - 比较 hashmap 键中的 ArrayList

java - Java 如何从 HashMap 中获取对象

java - java中I/O文件读取问题

java - 在列表网格中使用可分页选项滚动到行 Smart gwt

java - 从 ListView 中删除行的动画

redis - Redis 中的 Scheduled Post 实现

redis - MISCONF Redis配置为保存RDB快照,但目前无法持久化到磁盘

redis - Redis排序集中的模式匹配并按顺序返回结果