All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jeesuite.cache.redis.shard.JedisShardProvider Maven / Gradle / Ivy

There is a newer version: 1.4.0
Show newest version
/**
 * 
 */
package com.jeesuite.cache.redis.shard;

import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.jeesuite.cache.redis.JedisProvider;

import redis.clients.jedis.BinaryShardedJedis;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
import redis.clients.jedis.exceptions.JedisException;

/**
 * 标准(单服务器)redis服务提供者
 * @description 
* @author vakin * @date 2015年04月23日 */ public class JedisShardProvider implements JedisProvider{ protected static final Logger logger = LoggerFactory.getLogger(JedisShardProvider.class); public static final String MODE = "standard"; private ThreadLocal context = new ThreadLocal<>(); private ShardedJedisPool jedisPool; private String groupName; public JedisShardProvider(String groupName,JedisPoolConfig jedisPoolConfig, String[] servers, int timeout) { super(); this.groupName = groupName; List shards = buildShardInfos(servers,timeout); jedisPool = new ShardedJedisPool(jedisPoolConfig, shards); } private List buildShardInfos(String[] servers, int timeout){ List infos = new ArrayList<>(); for (String server : servers) { String[] addrs = server.split(":"); JedisShardInfo info = new JedisShardInfo(addrs[0], Integer.parseInt(addrs[1].trim()), timeout); infos.add(info); } return infos; } public ShardedJedis get() throws JedisException { ShardedJedis jedis = context.get(); if(jedis != null)return jedis; try { jedis = jedisPool.getResource(); } catch (JedisException e) { if(jedis!=null){ jedis.close(); } throw e; } context.set(jedis); if(logger.isTraceEnabled()){ logger.trace(">>get a redis conn[{}]",jedis.toString()); } return jedis; } @Override public BinaryShardedJedis getBinary() { return get(); } public void release() { ShardedJedis jedis = context.get(); if (jedis != null) { context.remove(); jedis.close(); if(logger.isTraceEnabled()){ logger.trace("<




© 2015 - 2025 Weber Informatics LLC | Privacy Policy