请问如何在 Redis 里匹配不以指定字符串为前缀的数据

2023-03-24 15:20:41 +08:00
 Morii

也就是使用 SCAN 命令实现

SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

比如我想匹配 ABC 开头的 KEY 可以这么写:

SACN 0 MATCH ABC*

但是我的需求是匹配 不以 ABC 开头的 KEY ,chatGPT 让我这么写

SACN 0 MATCH ^ABC*

但是似乎并不生效

549 次点击
所在节点    问与答
4 条回复
zjj19950716
2023-03-24 17:34:23 +08:00
SACN ? ^(?!ABC)
julyclyde
2023-03-26 18:54:37 +08:00
glob-style pattern
那个并不是 regex ,不支持^符号的

通常来说如果你有这样的需求,那是设计阶段就已经错了
Morii
2023-03-27 14:58:20 +08:00
@julyclyde #2

是的,我是在阿里云同步了一个多个服务共用的 redis ,所以我想把其他服务不需要 key 删掉,想了想 不删除也没啥问题,所以暂时先不搞了,感谢回复
julyclyde
2023-03-27 15:25:59 +08:00
@Morii 你 scan 所有的 key ,然后再额外进行一步判断试试看?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/926867

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX