redis - Redisson 客户端:检索前 N 个键
问题描述
如何从redisson 客户端获取 N 个键的顶部?
我在方法中找到了下一个签名getKeysByPattern()
:
Iterable<String> getKeysByPattern(String pattern, int count);
但看起来count
- 是根据对 Redis 的请求加载的密钥。
如何通过 redisson 客户端从 Redis 加载前 N 个键?
解决方案
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)
推荐阅读
- cakephp-3.0 - CakePHP 3:如何隐藏“_joinData”检索数据
- javascript - 从服务器读取数据后,一组特征的动态更新位置不起作用
- azure - Azure 函数 blobTrigger 未注册
- python - xgboost 模型如何知道哪个是 pos 另一个是 neg?sklearn 默认 1 是 pos 0 是 neg?
- excel - 如何检查包含特定数字的文件夹中的所有文件?
- laravel - Vue 组件在 Laravel 5.8 中渲染了两次
- c# - 如何创建一个“部分继承”另一个类或仅实现另一个类的一些成员和函数的类?
- kubernetes - Kubernetes Service 不转发到 80 和 443 以外的端口
- r - 从最后一次满足条件到数据框的最后一行的子集数据 - 应用于每个主题
- python - pylint 没有成员问题,但代码仍然有效 vscode