1. 程式人生 > >Redis叢集的配置檔案和程式碼

Redis叢集的配置檔案和程式碼

Redis叢集的配置

java程式碼

public class RedisService {
	// 登入校驗資訊的key
	public static final String DPM_LOGIN_LOGININFO_KEY = "DPM_LOGIN_LOGININFO_";
		
	// Jedis連線池
	private static ShardedJedisPool jedisPool;
    /** 
     * 構建redis連線池 
     *  
     * @param ip 
     * @param port 
     * @return JedisPool 
     */  
    public static ShardedJedisPool getPool() {  
        if (jedisPool == null) {  
            JedisPoolConfig config = new JedisPoolConfig(); 
            //最大連線數
            config.setMaxTotal(1024);
            //物件最大空閒連線數
            config.setMaxIdle(200);
            //連線的最大等待毫秒數
            config.setMaxWaitMillis(1000);  
            //連線測試可用
            config.setTestOnBorrow(true); 
            //返回連線池測試可用
            config.setTestOnReturn(true);
            String host = "192.168.68.249";
            int port = 6379;
            List<JedisShardInfo> jdsInfoList =new ArrayList<JedisShardInfo>();
            JedisShardInfo info = new JedisShardInfo(host, port);
            info.setPassword("123456");
            jdsInfoList.add(info);
            jedisPool =new ShardedJedisPool(config, jdsInfoList);
        }  
        return jedisPool;  
    }  
	/**
	 * get操作
	 */
	public String get(final String key){
		ShardedJedis shardedJedis = null;
		jedisPool=getPool();
		try {
			// 獲取連線
			shardedJedis = jedisPool.getResource();
			// 獲取快取資料
			return shardedJedis.get(key);
		} finally {
			if(null != shardedJedis){
				// 將有效的連線返回到連線池
				shardedJedis.close();
			}
		}
	}
	
	/**
	 * 設定存活時間
	 */
	public Long expire(String key,int seconds) {
		ShardedJedis shardedJedis = null;
		try {
			// 獲取連線
			shardedJedis = jedisPool.getResource();
			// 設定生存時間
			return shardedJedis.expire(key, seconds);
		} finally {
			if(null != shardedJedis){
				// 將有效的連線返回到連線池
				shardedJedis.close();
			}
		}
	}
	
	/**
	 * setter
	 */
	public void setJedisPool(ShardedJedisPool jedisPool) {
		this.jedisPool = jedisPool;
	}
}
依賴
<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.6.0</version>
</dependency>
spring配置(此程式碼沒有使用讀取外部檔案,可不用這段配置)
<!-- 單點登入的redis -->
<!-- jedis連線池配置資訊 -->
	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
		<property name="maxTotal" value="${redis.maxTotal}"></property>
		<property name="maxIdle" value="${redis.maxIdle}"></property>
		<property name="maxWaitMillis" value="${redis.maxWaitMillis}"></property>
		<property name="testOnBorrow" value="${redis.testOnBorrow}"></property>
		<property name="testOnReturn" value="${redis.testOnReturn}"></property>
	</bean>
	<bean id="loginJedisPool" class="redis.clients.jedis.ShardedJedisPool">
		<!-- 連線池的配置 -->
		<constructor-arg index="0" ref="jedisPoolConfig" />
		<!-- 叢集資訊 -->
		<constructor-arg index="1">
			<list>
				<!-- 第一個節點 -->
				<bean class="redis.clients.jedis.JedisShardInfo">
					<constructor-arg index="0" value="${loginRedis.ip}" />
					<constructor-arg index="1" value="${loginRedis.port}" />
					<constructor-arg index="2" value="node1" />
					<property name="password" value="${loginRedis.pass}" />
				</bean>
			</list>
		</constructor-arg>
	</bean>
	<bean id="loginRedisService" class="com.deppon.dpm.module.common.server.service.impl.RedisService">
		<property name="jedisPool" ref="loginJedisPool" />
	</bean>
	<!-- 單點登入的redis end-->
spring-config.properties的redis引數配置(沒使用spring.xml的配置就可不使用此配置):
3、spring-config.properties的redis引數配置:
loginRedis.ip=192.168.68.249
loginRedis.port=6379
loginRedis.pass=123456
#最大連線數
redis.maxTotal=1024
#最大空閒連線數
redis.maxIdle=200
#獲取連線的最大等待毫秒數
redis.maxWaitMillis=1000
#獲取連線測試可用
redis.testOnBorrow=true
#返回連線池測試可用
redis.testOnReturn=true