Redis 单点 读取配置文件信息

    在项目实施中我们经常会使用到redis进行存储数据。redis相关的配置信息有写在配置文件中,这样当需要修改参数时不需要重新修改代码,这样比较灵活。redis.properties配置文件中配置了redis相关的参数。读取redis参数的类参考CachePool.java.如下所示

CachePool.java

package cn.com.jtang.util;

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.*;

import java.io.IOException;
import java.io.InputStream;
import java.util.*;

public final class CachePool {
    public final static int expireTime = 1800;
    static Map<String, Jedis> jediss = null;
    static JedisCluster pool;
    private static Properties p;

    static {
        JedisPoolConfig config = new JedisPoolConfig();

        config.setMaxIdle(100);
        config.setMaxWaitMillis(1000l);

        InputStream inputStream = CachePool.class.getClassLoader().getResourceAsStream("redis.properties");

        p = new Properties();

        try {
            p.load(inputStream);
        } catch (IOException e) {

            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private CachePool() {
    }

    /**
     * Method description getInstance
     *
     * @return BinaryJedisCluster
     */
    public static synchronized JedisCluster getInstance() {
        if (pool == null) {
            String serverInfo = p.getProperty("redis.server.info");
            Set<HostAndPort> set = new HashSet<HostAndPort>();
            String ipPort[] = serverInfo.split(",");
            int len = ipPort.length;

            for (int i = 0; i < len; i++) {
                String server[] = ipPort[i].split(":");

                set.add(new HostAndPort(server[0], Integer.parseInt(server[1])));
            }

            // Jedis Cluster will attempt to discover cluster nodes
            GenericObjectPoolConfig config = new GenericObjectPoolConfig();

            pool = new JedisCluster(set,
                    Integer.parseInt(p.getProperty("redis.timeout")),
                    Integer.valueOf(p.getProperty("redis.maxRedirections")),
                    config);
        }

        return pool;
    }

    /**
     * Method description getJedisMap
     *
     * @return Map<String,Jedis>
     */
    public static synchronized Map<String, Jedis> getJedisMap() {
        if (jediss == null) {
            jediss = new HashMap<String, Jedis>();

            String serverInfo = p.getProperty("redis.server.info");
            String ipPort[] = serverInfo.split(",");
            int len = ipPort.length;

            for (int i = 0; i < len; i++) {
                String server[] = ipPort[i].split(":");
                Jedis jedis = new Jedis(server[0], Integer.parseInt(server[1]));

                jediss.put(server[1], jedis);
            }
        }

        return jediss;
    }
}

redis.properties

redis.server.info=redis-7000:7000
#redis.server.info=192.168.0.137:7000,192.168.0.136:7003
#\u6700\u5927\u5206\u914D\u7684\u5BF9\u8C61\u6570
redis.pool.maxActive=1024  
#\u6700\u5927\u80FD\u591F\u4FDD\u6301idel\u72B6\u6001\u7684\u5BF9\u8C61\u6570  
redis.pool.maxIdle=200  
#\u5F53\u6C60\u5185\u6CA1\u6709\u8FD4\u56DE\u5BF9\u8C61\u65F6\uFF0C\u6700\u5927\u7B49\u5F85\u65F6\u95F4  
redis.pool.maxWait=1000  
#\u5F53\u8C03\u7528borrow Object\u65B9\u6CD5\u65F6\uFF0C\u662F\u5426\u8FDB\u884C\u6709\u6548\u6027\u68C0\u67E5  
redis.pool.testOnBorrow=true
#\u5F53\u5BA2\u6237\u7AEF\u95F2\u7F6E\u591A\u957F\u65F6\u95F4\u540E\u5173\u95ED\u8FDE\u63A5\uFF0C\u5982\u679C\u6307\u5B9A\u4E3A0\uFF0C\u8868\u793A\u5173\u95ED\u8BE5\u529F\u80FD
redis.timeout=1000
#\u6700\u5927\u91CD\u8FDE\u6570
redis.maxRedirections=10

猜你喜欢

转载自blog.csdn.net/luoww1/article/details/79397263