星球的眼睛 发表于 2024-8-3 22:15:48

Redis 批量删除指定含糊的key

一、批量删除指定含糊的key

批量删除前,可以查询要删除的key举行确认,keys 指令可以举行含糊匹配:
redis-cli keys "my*"
https://img-blog.csdnimg.cn/direct/915c6e9809a04f1383fa2496f5754eb0.png
要批量删除指定含糊的key,可以使用Redis的KEYS下令结合DEL下令来实现。KEYS下令可以查找全部符合给定模式的key,然后使用DEL下令逐个删除这些key。
以下是一个批量删除示例的Redis下令:
redis-cli keys "my*"
| xargs redis-cli del https://img-blog.csdnimg.cn/direct/eecf8c988371436abfcc70c28edd0709.png
假如指定数据序号为0,即默认数据库,下令如下:
redis-cli -n 0 keys "my*" | xargs redis-cli -n 0 del
假如指定 Redis 数据库访问密码,使用下面的下令,将 password 替换为redis的密码:
redis-cli -a "password" keys "my*" | xargs redis-cli -a "password" del
上述下令使用了管道 | 和 xargs 下令。首先,KEYS下令查找全部以"my"开头的key,并将效果通过管道转达给xargs下令。然后,xargs下令将每个key作为参数转达给DEL下令,逐个删除这些key。
请注意,使用KEYS下令和DEL下令举行批量删除操作时,需要谨慎使用,特别是在生产情况中。 由于KEYS下令会遍历全部的key,可能会对Redis的性能产生影响。假如需要频仍举行批量删除操作,建议使用其他更高效的方式,如使用Redis的SCAN下令结合Lua脚原来实现。
二、SCAN下令逐步遍历数据

SCAN下令是Redis中用于迭代遍历键空间的下令。它可以逐步遍历数据库中的全部key,而不会对服务器产生壅闭。
SCAN下令的语法如下:
SCAN cursor
此中,参数说明如下:


[*]cursor:游标,用于标识当前遍历的位置,初始值为0。
[*]MATCH pattern:可选参数,用于指定匹配的模式。
[*]COUNT count:可选参数,用于指定每次迭代返回的元素数目。
以下是一个示例的Redis下令:
127.0.0.1:6379> SCAN 0 MATCH "my*" COUNT 100
https://img-blog.csdnimg.cn/direct/a90fa1a497ba46d9940d9ffd37137ade.png
上述下令从游标为0的位置开始,匹配全部以"my"开头的key,并每次返回最多100个元素。实行SCAN下令后,会返回一个新的游标和一批匹配的key。假如新的游标为0,表示遍历完成。
使用SCAN下令可以克制一次性加载全部匹配的key,减少了对服务器的负载,并且可以在不壅闭其他操作的情况下举行遍历。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Redis 批量删除指定含糊的key