redis keys命令删除数据但是scan命令没有

时间:2016-10-27 05:29:14

标签: redis

redis-cli -s /data/redis/redis.sock --scan --pattern "*abcd|6128*" | xargs -L 100 redis-cli -s /data/redis/redis.sock DEL

以上命令不是从redis删除adta并给出以下输出

(integer) 0

虽然键命令工作正常

 redis-cli -s /data/redis/redis.sock KEYS 'abcd|6291*' | xargs redis-cli -s /data/redis/redis.sock DEL;

我正在做错什么

2 个答案:

答案 0 :(得分:0)

尝试使用xargs代替-L 1。为我工作。

redis-cli -s /data/redis/redis.sock --scan --pattern "*abcd|6128*" | xargs -L 1 redis-cli -s /data/redis/redis.sock DEL

BTW,KEYS应该在生产环境中避免使用,因为它是一个阻塞命令。

答案 1 :(得分:-1)

扫描仅适用于某些键(默认情况下,每次迭代10个键)。它返回一个偏移量以继续运行扫描,直到达到偏移0.然后您已经对所有键进行了采样。更多详细信息,请参阅文档:http://redis.io/commands/scan

另一方面,密钥一次性采样数据库中的所有密钥。由于单线程架构的加密可能会对其他客户端的性能造成影响,因此它也会受阻。