#redis #redisson
#redis #redisson
Вопрос:
Как я могу получить верхние из N ключей от клиента redisson?
Я нашел следующую подпись в getKeysByPattern()
методе:
Iterable<String> getKeysByPattern(String pattern, int count);
Но похоже, что count
— is ключи загружаются по запросу в Redis.
Как я могу загрузить N верхних ключей из Redis через клиент redisson?
Ответ №1:
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)
Ответ №2:
Для этого случая необходимо использовать RKeys.getKeysWithLimit(String pattern, int limit)
метод.