Redis删除除了以#开头的键以外的所有键

ami*_*ben 4 redis

我的redis集合包含许多键

我希望能够将所有键刷新,除了所有以下开头的键:

"配置::"

这可能吗?

kha*_*nou 8

你可以这样做

redis-cli KEYS "*" | grep -v "configurations::" | xargs redis-cli DEL
Run Code Online (Sandbox Code Playgroud)

将所有密钥列入redis,从列表中删除包含"configurations ::"的密钥,并从redis中删除它们

编辑为@Sergio Tulentsev注意它的密钥不适用于生产.我使用这个python脚本删除生产redis上的键.在调用脚本之前,我将复制从主服务器停止到从服务器.

#!/usr/bin/env python
import redis
import time

pattern = "yourpattern*"

poolSlave = redis.ConnectionPool(host='yourslavehost', port=6379, db=0)
redisSlave = redis.Redis(connection_pool=poolSlave)

poolMaster = redis.ConnectionPool(host='yourmasterhost', port=6379, db=0)
redisMaster = redis.Redis(connection_pool=poolMaster)


cursor = '0'
while cursor != 0:
        cursor, data = redisSlave.scan(cursor, pattern, 1000)
        print "cursor: "+str(cursor)
        for key in data:
                redisMaster.delete(key)
                print "delete key: "+key
        # reduce call per second on production server
        time.sleep(1) 
Run Code Online (Sandbox Code Playgroud)

  • 不鼓励使用KEYS,但是,可以在紧要关头使用它. (2认同)