【问题标题】:using jedis hmset method for inserting multiple field element in redis使用jedis hmset方法在redis中插入多个字段元素
【发布时间】:2018-01-09 14:20:59
【问题描述】:

我正在使用 java 中的 jedis 实现一个简单的 redis 命令。 redis-cli 命令是:

hmset myhash key "value1" field2 "value2" field3 "value3"

问题是jedishmset方法需要两个参数:

  • String key
  • Map <String, String> hash

可能的解决方案:

String key;
String value2;
String value3;
while(!toVisit.isEmpty()) {
    key = someQueue.poll()
    value2 = getTitle(key)
    value3 = getSize(value2)
    jedis.hmset(key, value2Map)
    jedis.hmset(key, value3Map)
...

但是,为了在 redis db 中添加一个具有三个字段的元组,必须实现三个 Tree Map 对象以获取它们最后添加的对象,这感觉有点违反直觉。

只是希望在继续实施之前有一些更好的想法。

【问题讨论】:

  • 我已经更新了我的问题,使其更加清晰。我还没有创建地图——我现在正在这样做。但它们将是 NavigableMap 以便能够在执行循环时获取最后一个条目。
  • 您在使用 hmset 时遇到了什么问题?我认为您可以简单地创建您的键值的 k 映射并将该映射存储在 hmset 中,并带有一个用于识别该映射的键。休息一下,如果你能说明问题,那么我可以帮助你。

标签: java redis jedis


【解决方案1】:

不确定这是您要查找的内容,但我认为您需要将所有值放入 hashmap 并将 hashmap 对象作为第二个参数放在 jedis.hmset() 中。见下文

Map<String, String> avalue = new 
HashMap<String, String>();
avalue.put(a, a1);
avalue.put(b, b1);
avalue.put(c, c1);
avalue.put(d,d1)
jedis.hmset(key, avalue);

【讨论】:

    【解决方案2】:

    如果您正在寻找与 Java API 兼容的解决方案,您可以使用 Redisson

    Map<String, String> redisMap = redisson.getMap("myMap");
    
    Map<String, String> newEntries = new HashMap<>();
    newEntries.put("1", "a");
    newEntries.put("2", "b");
    newEntries.put("3", "c");
    
    redisMap.putAll(newEntries);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-06
      • 2017-06-05
      • 2022-01-05
      • 2015-12-18
      • 2021-08-06
      • 2021-11-30
      • 2013-08-28
      • 2018-11-04
      相关资源
      最近更新 更多