Jedis實現批量刪除redis cluster
在網上找了好幾遍也沒找到可以批量刪除或者清空redis cluster的方法
我就用jedis寫了一個
//獲取jedis連線
private JedisCluster jedisCluster=JedisClusterUtil.getJedisCluster();
//@param pattern 獲取key的字首 全是是 *
public static TreeSet<String> keys(String pattern){
TreeSet<String> keys = new TreeSet<>();
//獲取所有的節點
Map<String, JedisPool> clusterNodes = jedisCluster.getClusterNodes();
//遍歷節點 獲取所有符合條件的KEY
for(String k : clusterNodes.keySet()){
logger.debug("Getting keys from: {}", k);
JedisPool jp = clusterNodes.get(k);
Jedis connection = jp.getResource();
try {
keys.addAll(connection.keys(pattern));
} catch(Exception e){
logger.error("Getting keys error: {}", e);
} finally{
logger.debug("Connection closed.");
connection.close();//用完一定要close這個連結!!!
}
}
logger.debug("Keys gotten!");
return keys;
}
//main方法
public static void main(String[] args ){
TreeSet<String> keys=keys("*");
//遍歷key 進行刪除 可以用多執行緒
for(String key:keys){
jedisCluster.del(key);
System.out.println(key);
}
}