Как я могу сохранить вложенный Hashmap в Redis? - PullRequest
0 голосов
/ 10 сентября 2018

Я хочу хранить netsted HashMap в Redis с одним ключом.

Например:

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

Пожалуйста, предложите:

  • Есть ли способ сохранить вышеупомянутую структуру данных?
  • Как мы можем этого достичь?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Redis не поддерживает его на данный момент. Однако есть способ сделать это, кроме rejson.

Вы можете преобразовать его в JSON, сохранить в Redis и получить. Следующие служебные методы, которые я использую в Джексоне.

Чтобы преобразовать объект в строку:

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.

0 голосов
/ 10 сентября 2018

Redis не поддерживает хранение хеша внутри хеша. Но существует REDIS как хранилище JSON , которое может хранить JSON в REDIS. Это позволяет хранить, обновлять и извлекать значения JSON из ключей Redis. Я думаю, что это может помочь вам сохранить ваши данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...