如何通过Redisson客户端通过RMap检查Redis中是否已经存在该值



我是Redisson的新手,对基本操作有问题。我正在尝试查看Hashmap中某个特定键下的值是否已经存在于底层Redis存储中并返回它。我一定是对redison 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]

有什么想法吗?

原来我想得太多了。呼叫:

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

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

这起到了作用:

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

最新更新