gpt4 book ai didi

redis - Redis中如何批量删除几十万个带有特殊字符的key

转载 作者:IT王子 更新时间:2023-10-29 05:55:36 25 4
gpt4 key购买 nike

我们有一个包含各种特殊字符的数十万个 Redis 键的列表,我们想批量删除它们。关于这个问题的类似问题有一些很好的答案:How to atomically delete keys matching a pattern using Redis

但是,对于以下情况,我似乎找不到答案:

  1. 我们有大量的 key (数十万个)
  2. 键有各种特殊字符,如双引号 (")、反斜杠 ()、各种奇怪的 Unicode 字符等。
  3. 我们正在使用 windows redis-cli 客户端
  4. 好处:理想情况下,我们能够将此命令作为 MULTI/EXEC 事务的一部分发出,这样我们也可以连同 key 一起自动删除 SET。

如果我们可以像下面这样做,我会很高兴,但让它处理带有给 Redis 问题的所有特殊字符的键:

redis-cli SMEMBERS "myGiganticListOfKeys"| xargs --delim='\n' redis-cli DEL

不幸的是,这只会给出以下错误:

"C:/Program Files (x86)/Git/bin/xargs.exe": redis-cli: Bad file number

我认为,如果我们在键中没有特殊字符,这会奏效。

提前致谢。

最佳答案

这是我解决它的方法,这适用于无数的记录,而不会对 redis 造成压力。

WARNING: PLEASE DO NOT TRY THIS AT HOME UNATTENDED AND MAKE SURE TO WEAR 
ALL SAFETY EQUIPMENT NECESSARY FOR THE TASK.

第 1 步。 将您需要的所有 key 从 redis 转储到一个文件中,我们将此文件称为 YES_WE_CAN.sh

redis-cli KEYS "StartsWith*" > YES_WE_CAN.sh

第二步:用vi或vim打开文件YES_WE_CAN.sh,按:字符,然后输入以下内容替换特殊字符':

:%s/'/'"'"'/g

这会将所有 ' 字符替换为 '"'"' 转义序列。 (相信我,这有效,继续!)

第 3 步:在每个字符串前添加 redis-cli DEL(不要忘记末尾的空格):

:%s/^/redis-cli DEL /g

第 4 步:在每行末尾附加 ' 字符:

:%s/$/'/g

第 5 步: 保存文件并使用 :wq

退出

第 6 步:将文件 YES_WE_CAN.sh 更改为可执行模式:

chmod +x YES_WE_CAN.sh

第 7 步:运行文件:

./YES_WE_CAN.sh

在脚本删除您请求的数百万个 key 的同时享用您的咖啡。

关于redis - Redis中如何批量删除几十万个带有特殊字符的key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32890648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com