package com.deleteredisdata.deletedata;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPool;
public class RedisOperator {
private JedisCluster jedisCluster;
public RedisOperator(){
String redisString = "redisCluster=IP:端口,P:端口,IP:端口";
String[] hostArray = redisString.split(",");
Set<HostAndPort> nodes = new HashSet<HostAndPort>();
//配置redis集群
for(String host : hostArray)
{
String[] detail = host.split(":");
nodes.add( new HostAndPort(detail[0] , Integer.parseInt(detail[1])) );
}
jedisCluster = new JedisCluster(nodes);
}
public TreeSet<String> keys(String pattern){
System.out.println("Start getting keys...");
TreeSet<String> keys = new TreeSet<>();
Map<String, JedisPool> clusterNodes = jedisCluster.getClusterNodes(); //获取所有连接池节点
for(String k : clusterNodes.keySet()){ //遍历所有连接池,逐个进行模糊查询
System.out.println("Getting keys from:"+k);
JedisPool jp = clusterNodes.get(k);
Jedis connection = jp.getResource();
try {
keys.addAll(connection.keys(pattern));//获取Jedis对象,Jedis对象支持keys模糊查询
} catch(Exception e){
System.out.println("Getting keys error:"+e);
} finally{
System.out.println("Connection closed.");
connection.close();//用完一定要close这个链接!!!
}
}
System.out.println("Keys gotten!");
return keys;
}
/**
* 获取redis中指定key的值,value类型为String的使用此方法
*/
public String get(String key)
{
return jedisCluster.get(key);
}
/**
* 设置redis中指定key的值,value类型为String的使用此方法
*/
public void set(String key,String value)
{
jedisCluster.set(key,value);
}
/**
* 获取redis中指定key的值,对应的value,value类型为MAP的使用此方法
*/
public Map<String,String> getMap(String key)
{
return jedisCluster.hgetAll(key);
}
/**
* 删除redis中指定key的值项
*/
public void del(String key)
{
jedisCluster.del(key);
}
}