批量删除redis 缓存
redis-cli -h 192.168.1.84 -p 6379 -a testpasswd keys "app*" | xargs redis-cli -h 192.168.1.84 -p 6379 -a testpasswd del
redis如何清除所有的key 2013-12-12 14:52:18
分类: NOSQL
redis比memcache好的地方之一,如果memcache,恐怕就得关掉重启了。
1 使用cli
FLUSHDB 清除一个数据库,FLUSHALL清除整个redis数据。
2 使用shell
redis-cli keys "*" | while read LINE ; do TTL=`redis-cli ttl $LINE`; if [ $TTL -eq -1 ]; then echo "Del $LINE"; RES=`redis-cli del $LINE`; fi; done;
删除 3600秒之后过期的
redis-cli keys "*" | while read LINE ; do TTL=`redis-cli ttl $LINE`; if [ $TTL -ge 3600 ]; then echo "Del $LINE"; RES=`redis-cli del $LINE`; fi; done;
删除某些前缀的
redis-cli KEYS "126.com*" | xargs redis-cli DEL
redis-cli keys "*" | while read LINE ; do TTL=`redis-cli ttl $LINE`; if [ $TTL -eq -1 ]; then echo "Del $LINE"; RES=`redis-cli del $LINE`; fi; done;
redis-cli -h 192.168.1.83 -p 6380 -a testpasswd keys "app_*" | xargs redis-cli -h 192.168.1.83 -p 6380 -a testpasswd del
redis-cli -h 192.168.1.83 -p 6380 -a testpasswd keys "app_*" | while read LINE ; do TTL=`redis-cli -h 192.168.1.83 -p 6380 -a testpasswd ttl $LINE`; if [ $TTL -eq -1 ]; then echo "LLEN $LINE"; RES=`redis-cli -h 192.168.1.83 -p 6380 -a testpasswd LLEN $LINE`; fi; done;
redis-cli -h 192.168.1.83 -p 6380 -a testpasswd keys "app_*" | while read LINE ; do TTL=`redis-cli -h 192.168.1.83 -p 6380 -a testpasswd ttl $LINE`; if [ $TTL -eq -1 ]; then echo "Del $LINE"; RES=`redis-cli -h 192.168.1.83 -p 6380 -a testpasswd Del $LINE`; fi; done;
app_smallapp_v2_5_*
//select
redis-cli -h 192.168.1.83 -p 6380 -a testpasswd keys "app_*" | while read LINE ; do TTL=`redis-cli -h 192.168.1.83 -p 6380 -a testpasswd ttl $LINE`; if [ $TTL -eq -1 ]; then echo "expire $LINE"; RES=`redis-cli -h 192.168.1.83 -p 6380 -a testpasswd EXPIRE $LINE 60`; fi; done;
//del
redis-cli -h 192.168.1.83 -p 6380 -a testpasswd keys "app_*" | while read LINE ; do TTL=`redis-cli -h 192.168.1.83 -p 6380 -a testpasswd ttl $LINE`; if [ $TTL -eq -1 ]; then echo "Del $LINE"; RES=`redis-cli -h 192.168.1.83 -p 6380 -a testpasswd Del $LINE`; fi; done;
//ttl
redis-cli -h 192.168.1.83 -p 6380 -a testpasswd keys "app_*" | while read LINE ; do TTL=`redis-cli -h 192.168.1.83 -p 6380 -a testpasswd ttl $LINE`; if [ $TTL -eq -1 ]; then echo "ttl $LINE"; RES=`redis-cli -h 192.168.1.83 -p 6380 -a testpasswd ttl $LINE `; fi; done;
redis-cli -h 192.168.1.83 -p 6380 -a testpasswd keys "app_*" | while read LINE ; do TTL=`redis-cli -h 192.168.1.83 -p 6380 -a testpasswd ttl $LINE`; if [ $TTL -ne -1 ]; then echo "ttl $LINE"; RES=`redis-cli -h 192.168.1.83 -p 6380 -a testpasswd ttl $LINE `; fi; done;
3 使用lua脚本
删除所有key
EVAL "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 0 *
删除某些key
EVAL "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 0 126.com*