Redis批量删除指定前缀的key


    在redis-cli中键入命令,批量删除前缀为business_login_tokens:的key:

eval "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 0 'business_login_tokens:*'



    在Redis中,EVAL命令用于执行Lua脚本。这个特定的命令是用来批量删除具有特定前缀的键的。下面是这个命令的详细解释

  • EVAL: 这是Redis命令,用于执行一个Lua脚本。
  • return redis.call('del', unpack(redis.call('keys', ARGV[1]))): 这是Lua脚本的内容。
    • redis.call('del', ...):调用Redis的DEL命令来删除一个或多个键。...表示这里将传入一个或多个键作为参数。
    • unpack(redis.call('keys', ARGV[1])): 在执行DEL命令之前,首先通过redis.call('keys', ARGV[1])调用查找所有匹配ARGV[1]模式的键。ARGV[1]是Lua脚本中的参数,代表从外部传入的第一个参数。keys命令返回的是一个包含所有匹配键名的数组。unpack函数则用来将这个数组展开成一系列单独的参数传递给DEL命令。
  • 0: 这个数字是Lua脚本的参数数量的计数。在这个例子中,因为我们在脚本内部直接使用了ARGV[1],所以外部传递给EVAL命令的参数实际上只有一个(即键的模式),因此计数为0。但这里可能存在混淆,通常如果直接使用ARGV的话,这里的计数应与ARGV中实际使用的参数数目对应,因此正确的计数应该是1而不是0,表示有一个外部参数传递给了脚本。
  • 'business_login_tokens:*': 这是传递给Lua脚本的实际参数,即ARGV[1]的内容。它是一个模式,表示所有以business_login_tokens:为前缀的键。这些键将会被前面提到的Lua脚本找到并删除。

        综上所述,整个命令的作用是删除所有以business_login_tokens:为前缀的键。这是一种清理特定类型缓存条目的高效方式,但需要注意的是,在生产环境中直接使用KEYS命令可能会影响性能,特别是在大数据集上,因为它会遍历整个数据库。因此,这种操作更适用于维护任务或者数据量可控的情况。对于大规模操作,建议使用更安全和高效的方法,如SCAN命令配合Lua脚本来逐步处理。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遥夜人间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值