我方还有一个选择:

在我们的 生产环境 和预 生产环境 数据库中,有数千个密钥 . 我们需要不时删除一些键(通过某些掩码),按某些标准修改等等 . 当然,没有办法从CLI手动完成,特别是有分片(每个物理中有512个逻辑dbs) .

为此我编写了java客户端工具来完成所有这些工作 . 如果删除密钥,实用程序可以非常简单,只有一个类:

public class DataCleaner {
public static void main(String args[]) {
String keyPattern = args[0];
String host = args[1];
int port = Integer.valueOf(args[2]);
int dbIndex = Integer.valueOf(args[3]);
Jedis jedis = new Jedis(host, port);
int deletedKeysNumber = 0;
if(dbIndex >= 0){
deletedKeysNumber += deleteDataFromDB(jedis, keyPattern, dbIndex);
} else {
int dbSize = Integer.valueOf(jedis.configGet("databases").get(1));
for(int i = 0; i < dbSize; i++){
deletedKeysNumber += deleteDataFromDB(jedis, keyPattern, i);
}
}
if(deletedKeysNumber == 0) {
System.out.println("There is no keys with key pattern: " + keyPattern + " was found in database with host: " + host);
}
}
private static int deleteDataFromDB(Jedis jedis, String keyPattern, int dbIndex) {
jedis.select(dbIndex);
Set keys = jedis.keys(keyPattern);
for(String key : keys){
jedis.del(key);
System.out.println("The key: " + key + " has been deleted from database index: " + dbIndex);
}
return keys.size();
}
}

写这样的工具我觉得很容易,花费不超过5-10分钟 .