首页 > 解决方案 > Redisson 客户端:检索前 N 个键

问题描述

如何从redisson 客户端获取 N 个键的顶部?

我在方法中找到了下一个签名getKeysByPattern()

Iterable<String> getKeysByPattern(String pattern, int count);

但看起来count- 是根据对 Redis 的请求加载的密钥。

如何通过 redisson 客户端从 Redis 加载前 N 个键?

标签: redisredisson

解决方案


getKeysByPattern()对这种情况无效,对。

最好在这里使用 lua 脚本:

val luaScript = "return {redis.call('SCAN',ARGV[1],'MATCH',ARGV[2],'COUNT',ARGV[3])}"
var cursor = 0
do {
  val data = redissonClient
                .getScript(StringCodec.INSTANCE)
                .eval(RScript.Mode.READ_ONLY,
                        luaScript,
                        RScript.ReturnType.MAPVALUELIST,
                        listOf(),
                        cursor,
                        "some-pattern",
                        batchSize)


  val redistListData = (data[0][1] as List<String>)
  cursor = data[0][0].toInt()
} while (cursor != 0)

推荐阅读