gpt4 book ai didi

shell - Redis 按哈希值中的模式删除哈希键

转载 作者:IT王子 更新时间:2023-10-29 06:11:27 26 4
gpt4 key购买 nike

我遇到了一个小问题。我想从值与字符串模式匹配的 redis 数据库中删除所有哈希键/值对。对于按键值删除哈希的问题,我找到了一些命令行解决方案,但没有找到针对按值模式删除的相关问题的解决方案。

具体例子:

redis> HSET myhash field1 "Wild"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HSET myhash field2 "Window"
(integer) 1

现在我想从 myhash 中删除所有匹配“Wi.*”的键/值对,即 field1/Wild、field3/Window,但保持 field2/World 不变。

我想在命令行上执行此操作,所以像这样的东西会很棒:

redis-cli -n 0 KEYS someFoo* | xargs redis-cli -n 0 DEL

以上当然不适用于哈希。所以最后我需要打电话

redis-cli -n 0 hdel myhash field1 
redis-cli -n 0 hdel myhash field3

以自动化方式。

最佳答案

不幸的是,我认为您可以完成此操作的唯一方法是使用 HGETALL,或者更好的 HSCAN

redis> HGETALL myhash
1) "field1"
2) "Wild"
3) "field2"
4) "Window"

从理论上讲,您可以将其通过管道传输到与您的正则表达式匹配偶数行的内容中,并在匹配之前的奇数行发出一个或多个 HDEL 命令。这对我的 bash 技能来说有点过分了。也许 lua 脚本会更容易。

如果您的散列非常大,您真的应该使用 HSCANHGETALL 在获取数据时会阻塞。

关于shell - Redis 按哈希值中的模式删除哈希键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33546111/

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