I am using Redis hash set to store data in the following format:
hset b1.b2.b3 name test
Now I want to delete this key so I am using the following format:
del b1.b2.*
But it not working so how I delete the Redis key using a pattern?
I am using Redis hash set to store data in the following format:
hset b1.b2.b3 name test
Now I want to delete this key so I am using the following format:
del b1.b2.*
But it not working so how I delete the Redis key using a pattern?
Redis does not provide any method to delete bulk keys. But redis-cli along with xargs can be used to achieve what you are trying to do. See the commands below:
127.0.0.1:6379> hset b1.b2.b3 name test
(integer) 1
127.0.0.1:6379> hgetall b1.b2.b3
1) "name"
2) "test"
$ redis-cli --scan --pattern b1.b2.* | xargs redis-cli del
(integer) 1
$ redis-cli
127.0.0.1:6379> hgetall b1.b2.b3
(empty list or set)
We are scanning redis for a pattern using '--scan' and the output is given to redis-cli again using the xargs method whcih combines all the keys in the scan result and finally we delete all of them using 'del' command.
If you'd like to do this via the redis-cli
in bulk, you could consider expiring all the keys based on a specified pattern:
EVAL 'for i, name in ipairs(redis.call("KEYS", <pattern>)) do redis.call("EXPIRE", name, 1); end' 0
Effectively it sets the expiration to 1 second so this should do the trick!
In my case this command worked like a charm:
redis-cli -a myPass keys "*myKeyword*" | xargs -I% redis-cli -a myPass del "%"
You can do it using the pattern above @Ankit answered.
you can do a SCAN
and then delete the keys until nothing left (cursor is 0)
© 2022 - 2024 — McMap. All rights reserved.