【问题标题】:How do I check if the value is already present in Redis through RMap via Redisson client?如何通过 Redisson 客户端通过 RMap 检查该值是否已存在于 Redis 中?
【发布时间】:2021-09-23 15:43:07
【问题描述】:

我是 Redisson 的新手,基本操作有问题。 我正在尝试查看 Hashmap 中特定键下的值是否已经存在于底层 Redis 存储中并将其返回。 我一定是 Redisson API 出了问题。

这是我正在做的事情:

    public Optional<Double> getMetricEntryValue(String metricKey, String metricDataEntryKey) {
        RMap<String, Double> metricDataMap = redissonClient.getMap(metricKey, MapOptions.defaults());
        metricDataMap.loadAll(ImmutableSet.of(metricDataEntryKey), true, 1);
        return Optional.ofNullable(metricDataMap.get(metricDataEntryKey));
    }

这是我得到的一个错误:

2021-07-14 12:09:14,943 [,,,] ERROR [redisson-3-1] RedissonMap$4 - Unable to load value by key 2021-07-14:CO:12 for map fts-alert:partner-submitted-apps
java.lang.NullPointerException: null
    at org.redisson.RedissonMap$4.run(RedissonMap.java:1256) [redisson-3.12.5.jar:3.12.5]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_212]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_212]
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-all-4.1.48.Final.jar:4.1.48.Final]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_212]

有什么想法吗?

【问题讨论】:

    标签: java redis redisson


    【解决方案1】:

    原来是我想多了这个问题。呼吁:

    metricDataMap.loadAll(ImmutableSet.of(metricDataEntryKey), true, 1);
    

    对于这个简单的操作来说是不必要的。

    这行得通:

    RMap<String, Double> metricDataMap = redissonClient.
         getMap(metricKey,MapOptions.defaults());
    return Optional.ofNullable(metricDataMap.get(metricDataEntryKey));
    

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多