redis(二) JedisCluster操作redis集群工具。

一、RedisDao定义。

package com.cloudwise.redis;
/**
  * 暂时定义几个 后续再扩展
  * <p>Title: RedisDao</p>  
  * <p>Description: </p>  
  * @author back  
  * @date 2019年9月19日
 */
public interface RedisDao {

	boolean isExist(String key);
	
	String set(String key,String value);

	String get(String key);
	
	String setex(String key,String value,int seconds);
	
	long delete(String key);
	
	long incr(String key);
}

二、相关实现。只是向默认db中写

package com.cloudwise.redis;

import java.util.Arrays;
import java.util.Set;

import com.google.common.collect.Sets;

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
/**
  *
  * <p>Title: RedisDaoImpl</p>  
  * <p>Description: </p>  
  * @author back  
  * @date 2019年9月19日
 */
public class RedisDaoImpl  implements RedisDao{

	
	private JedisCluster jedisCluster;
	/**
	 * 
	 * @param hosts 127.0.0.1:6379,127.0.0.1:8001,127.0.0.1:8002
	 */
	public RedisDaoImpl(String hosts){
		Set<HostAndPort> nodes = transferHostAndPorts(hosts);
		JedisPoolConfig config = getConfig();
		jedisCluster = new JedisCluster(nodes, config);
	}
	private Set<HostAndPort> transferHostAndPorts(String hosts){
		Set<HostAndPort> set = Sets.newHashSet();
		Arrays.asList(hosts.split(",")).forEach(host1 -> {
			String[] meta = host1.trim().split(":");
			HostAndPort hostAndPort = new HostAndPort(meta[0].trim(),Integer.parseInt(meta[1].trim()));
			set.add(hostAndPort);
		});
		return set;
	}
	
	private JedisPoolConfig getConfig(){
		JedisPoolConfig config = new JedisPoolConfig();
		//最大连接数
		config.setMaxTotal(30);
		//最大空闲连接数
		config.setMaxIdle(10);
		//每次释放连接的最大数目
		config.setNumTestsPerEvictionRun(1024);
		// 释放连接的扫描间隔(毫秒)
		config.setTimeBetweenEvictionRunsMillis(30000);
		//连接最小空闲时间 
		config.setMinEvictableIdleTimeMillis(1800000);
		//连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放
		config.setSoftMinEvictableIdleTimeMillis(10000);
		//获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1
		config.setMaxWaitMillis(1500);
		//在获取连接的时候检查有效性, 默认false
		config.setTestOnBorrow(true);
		//在空闲时检查有效性, 默认false
		config.setTestWhileIdle(true);
		//连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
		config.setBlockWhenExhausted(false);
		return config;
	}
	@Override
	public boolean isExist(String key) {
		return jedisCluster.exists(key);
	}

	@Override
	public String set(String key, String value) {
		return jedisCluster.set(key, value);
	}

	@Override
	public String get(String key) {
		return jedisCluster.get(key);
	}

	@Override
	public String setex(String key, String value, int seconds) {
		return jedisCluster.setex(key, seconds, value);
	}

	@Override
	public long delete(String key) {
		return jedisCluster.del(key);
	}

	@Override
	public long incr(String key) {
		return jedisCluster.incr(key);
	}

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值