redis - 在 lua 脚本中使用扫描命令

标签 redis

我正在尝试使用 Hiredis 和 Redis 在我的系统中实现 2 个行为。 1) 通过发布事件获取所有具有模式的键,而不是使用 SCAN 命令时返回的数组。 (我的系统只适用于 publish 事件,即使是 get 所以需要坚持这种行为) 2) 删除所有带模式的键

阅读手册后,我明白“SCAN”命令是我的 friend 。 我有两种方法,不确定优缺点是什么:

1) 使用将调用 SCAN 的 Lua 脚本,直到我们得到 0 作为我们的光标,并为找到的每个条目获得 publish-event/delete-key。 2) 使用 Lua 脚本,但返回游标作为返回码,并使用新游标从 hiredis 客户端调用 LUA 脚本,直到它为 0。

或者其他想法会更好。

我的数据库根本不是 hugh .. 不超过 500k 的键/值小于 100 字节的条目。

谢谢!

最佳答案

选项 1 可能不适合在 Lua 脚本中运行,因为它会阻止所有其他请求的执行。 SCAN 在您的应用程序中运行时效果最佳,因此 Redis 仍可以处理其他请求。

关于redis - 在 lua 脚本中使用扫描命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52298356/

相关文章:

Python redis rpop 是 resultng b'value' 列表结构

Redis 自愈集群或云、Kubernetes 或 Swarm 中的替代方案?

php - 注意通过 Redis 在 CakePHP 中反序列化错误

caching - Redis 搜索等于某个值的匹配键

amazon-web-services - AWS ElastiCache redis 和 maxmemory

docker - docker swarm 中没有发生 redis sentinel 故障转移

tensorflow - 用于 ML 预测的 Celery 任务在执行中挂起

Redis:单独的数据库是否提高了 KEYS 和 SORT 的性能

hash - 过滤 Redis 哈希条目

spring-boot - Redis无法反序列化对象