RMapCache.keySet行为不一致

问题描述

我正在使用redisson 3.12.5

我有此地图“ REMOTE_SESSIONS”,我正在尝试使用getMapCache(RMapCache)访问它 提取地图后,我正在使用keySet查询它的keys,但是我看到了不一致的行为,并且不确定为什么。

我可能错误地使用了库,但这让我发疯了:)

这是我的代码

        List<RMapCache> cacheList = new ArrayList<>();
        int count = 10;
        // get 10 caches
        for (int i = 0; i < count; i++) {
            cacheList.add(redissonClient.getMapCache("REMOTE_SESSIONS",StringCodec.INSTANCE));
        }

        // for each one of them print the keyset
        for (int i = 0; i < count; i++) {
            Set set = cacheList.get(i).keySet(100);
            Iterator iterator = set.iterator();
            int actualCount = 0;
            while (iterator.hasNext()){
                iterator.next();
                actualCount++;
            }
            System.out.println("COUNT (from size) = " + set.size() + " - COUNT (actual) = " + actualCount);
        }

我正在执行以下操作:

获取10个REMOTE_SESSIONS高速缓存实例。对于它们中的每一个,都打印按大小指定的计数,然后打印通过迭代遍历检索的实际计数。

我得到以下输出

COUNT (from size) = 23 - COUNT (actual) = 23
COUNT (from size) = 23 - COUNT (actual) = 4
COUNT (from size) = 23 - COUNT (actual) = 4
COUNT (from size) = 23 - COUNT (actual) = 4
COUNT (from size) = 23 - COUNT (actual) = 4
COUNT (from size) = 23 - COUNT (actual) = 4
COUNT (from size) = 23 - COUNT (actual) = 23
COUNT (from size) = 23 - COUNT (actual) = 23
COUNT (from size) = 23 - COUNT (actual) = 23
COUNT (from size) = 23 - COUNT (actual) = 23

由于某些原因,keySet的实际内容是变化的。这可能与以下事实有关:在幕后使用HSCAN实施该操作,但无法真正说明原因。

知道为什么会发生这种情况,我可以从地图中访问密钥吗?

我的最终目标是使用一种模式来查询键,但这也不是一致的。

任何帮助将不胜感激。 谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)