根据没有 bash 的模式删除多个 Redis 键
Delete multiple Redis keys based on pattern without bash
我正在尝试根据指定的键模式从 Redis 实例中删除多个键。但是,与我在 SO 上看到的许多其他答案不同,我需要完全在 Redis 控制台中完成此操作,而无需使用任何其他脚本或 Bash。原因是我需要从 Azure Cache for Redis 门户的控制台功能中执行此操作。我可以使用 SCAN 0 MATCH *mypattern*
select 我想要的键,但是,我不知道有什么方法可以将其“管道”到 DEL
命令。
如果这对其他人有帮助,这是我发现对我有用的答案。
EVAL "return redis.call('del', unpack(redis.call('scan', 0, ‘MATCH', ARGV[1])[2]))" 0 *mypattern*
内部 redis.call('scan')
命令查找所有匹配 *mypattern*
的键(任何带有“mypattern”的键)。此命令的 return 值的第二个索引位置是键的列表,然后将其解压缩并传递给外部 redis.call('del')
命令,该命令从缓存中删除对象。
请注意,如果没有与模式匹配的键,这将 return 出错。这对我的用例来说没问题,所以我没有进一步探索它,但可能有办法解决这个问题。
我正在尝试根据指定的键模式从 Redis 实例中删除多个键。但是,与我在 SO 上看到的许多其他答案不同,我需要完全在 Redis 控制台中完成此操作,而无需使用任何其他脚本或 Bash。原因是我需要从 Azure Cache for Redis 门户的控制台功能中执行此操作。我可以使用 SCAN 0 MATCH *mypattern*
select 我想要的键,但是,我不知道有什么方法可以将其“管道”到 DEL
命令。
如果这对其他人有帮助,这是我发现对我有用的答案。
EVAL "return redis.call('del', unpack(redis.call('scan', 0, ‘MATCH', ARGV[1])[2]))" 0 *mypattern*
内部 redis.call('scan')
命令查找所有匹配 *mypattern*
的键(任何带有“mypattern”的键)。此命令的 return 值的第二个索引位置是键的列表,然后将其解压缩并传递给外部 redis.call('del')
命令,该命令从缓存中删除对象。
请注意,如果没有与模式匹配的键,这将 return 出错。这对我的用例来说没问题,所以我没有进一步探索它,但可能有办法解决这个问题。