最近在写redis集群的增删操作,写完代码后,运行还挺顺利,以下为示例代码。
一、构建连接地址
public class RedisConfig {
Set<HostAndPort> hostAndPortSet = new HashSet<HostAndPort>();
public RedisRateConfig(){
hostAndPortSet.add(new HostAndPort("172.0.0.15",22414));
hostAndPortSet.add(new HostAndPort("172.0.0.16",22414));
hostAndPortSet.add(new HostAndPort("172.0.0.17",22414));
}
public Set<HostAndPort> getHostAndPortSet(){
return hostAndPortSet;
}
}
二、创建连接池
代码如下(示例):
public class RedisClient {
private static volatile RedisClient instance;
private JedisCluster jedisCluster;
public static RedisClient getInstance(){
if (null ==instance){
synchronized (RedisClient.class){
if (null == instance){
RedisConfig redisConfig = new RedisConfig();
JedisPoolConfig poolConfig = new JedisPoolConfig();
// 连接池中最大连接数,默认为8
poolConfig.setMaxTotal(50);
// 连接池中最大空闲的连接数,默认为8
poolConfig.setMaxIdle(50);
poolConfig.setMinIdle(0);
// 连接最小空闲时间,达到该值后空闲连接将被移除,负值(-1)表示不移除,建议-1。
poolConfig.setMinEvictableIdleTimeMillis(-1);
poolConfig.setSoftMinEvictableIdleTimeMillis(-1);
RedisClient redisClient= new RedisClient();
redisClient.jedisCluster=new JedisCluster(redisConfig.getHostAndPortSet(),10000,poolConfig);
instance=redisClient;
}
}
}
return instance;
}
public RedisProvider getProvider(){
return new RedisProvider(instance.jedisCluster);
}
}
三、添加和删除数据
代码如下(示例):
public class RedisProvider implements Serializable {
private JedisCluster jedisCluster;
public RedisProvider() {
}
public RedisProvider(JedisCluster jedisCluster) {
this.jedisCluster = jedisCluster;
}
public JedisCluster getJedisCluster() {
return jedisCluster;
}
//添加数据
public void setKey(String id,String date){
for (int i =1;i<2000;i++){
jedisCluster.hset("key"+id+i+date,"value",i+"")
}
}
//删除数据---模糊删除
public void deleteKey(Set<String> keys){
Map<String,JedisPool> clusterNodes=jedisCluster.getClusterNodes();
TreeSet<String> newKey=new TreeSet<String>();
for(String kSet:clusterNodes.keySet()){
JedisPool jedisPoll = clusterNodes.get(kSet);
Jedis resource = jedisPoll.getResource();
for(String key:keys){
newKey.addAll(resource.keys("key"+"*"+key+"*"));
}
}
for(String delKey:newKey){
jedisCluster.del(delKey);
}
}
//关闭连接
public void close() {
try {
jedisCluster.close();
} catch (IOException e) {
throw new RuntimeException(e.getMessage(), e);
}
}
}
关于redis增删的示例代码,目前就这些。