Redis delete hash keys by pattern in hash value
我遇到了一个小问题。 我想从值与字符串模式匹配的redis数据库中删除所有哈希键/值对。 对于按键值删除哈希的问题,我为命令行找到了一些解决方案,但是对于按值模式删除哈希的相关问题,我没有找到解决方案。
具体示例:
1 2 3 4 5 6 | 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不变。
我想在命令行上执行此操作,因此这样的操作会很棒:
1 | redis-cli -n 0 KEYS someFoo* | xargs redis-cli -n 0 DEL |
以上工作当然不是为了散列。 所以最后我需要打电话
1 2 | redis-cli -n 0 hdel myhash field1 redis-cli -n 0 hdel myhash field3 |
以自动化的方式。
不幸的是,我认为唯一可以实现此目标的方法是使用
1 2 3 4 5 | redis> HGETALL myhash 1)"field1" 2)"Wild" 3)"field2" 4)"Window" |
从理论上讲,您可以将其转化为与正则表达式匹配偶数行的内容,并在匹配项之前发出奇数行的一个或多个HDEL命令。 这对我的bash技能来说有点过分了。 也许lua脚本会更容易。
如果您的哈希很大,则确实应该使用