下面,我有一个HashMap列表,我想将所有这些地图存储在redis的单个密钥中,但我没有得到任何方法来存储所有单键中的这些地图。请帮我解决这个问题。
Jedis jedis = new Jedis("localhost");
List <HashMap<String, String>> listOfMaps = new ArrayList<HashMap<String, String>>();
listOfMaps.add(new HashMap<String,String>);
listOfMaps.add(new HashMap<String,String>);
listOfMaps.add(new HashMap<String,String>);
listOfMaps.add(new HashMap<String,String>);
.
.
.
and so on lets take upto 10 values
现在,我想将这些地图存储在这样的密钥中:
for(int i=0;i<listOfMaps.size();i++){
jedis.hmset("mykey",listofMaps[i]);
}
但在他的情况下,hmset会覆盖所有旧值以写入新值。 请告诉我任何替代方法,将所有这些地图值存储在单个键 mykey 中。
答案 0 :(得分:1)
您可以使用Redisson框架提供的Multimap
对象。它允许将每个映射键的多个值存储为列表或集合。这是一个例子:
RMultimap<String, Integer> multimap = redisson.getListMultimap("myMultimap");
for (int i = 0; i < 10; i++) {
myMultimap.put("someKey", i);
}
// returns Redis list object
RList list = myMultimap.get("someKey");
答案 1 :(得分:0)
您可以使用类似以下的内容
public static void main(String[] args) {
Map<String, List<String>> map = new HashMap<String, List<String>>();
List<String> valSetOne = new ArrayList<String>();
valSetOne.add("ABC");
valSetOne.add("BCD");
valSetOne.add("DEF");
List<String> valSetTwo = new ArrayList<String>();
valSetTwo.add("CBA");
valSetTwo.add("DCB");
map.put("FirstKey", valSetOne);
map.put("SecondKey", valSetTwo);
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
String key = entry.getKey();
List<String> values = entry.getValue();
System.out.println("Value of " + key + " is " + values);
}
}