redis池简单实现

来源:互联网 发布:淘宝怎么定制东西 编辑:程序博客网 时间:2024/06/05 15:40

网上看到的一片文章,摘了一段做个备忘,原文地址:http://www.cnblogs.com/liuling/p/2014-4-19-04.html

package com.test;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public final class RedisUtil {    //Redis服务器IP    private static String ADDR = "192.168.0.100";    //Redis的端口号    private static int PORT = 6379;    //访问密码    private static String AUTH = "admin";    //可用连接实例的最大数目,默认值为8;    //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。    private static int MAX_ACTIVE = 1024;    //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。    private static int MAX_IDLE = 200;    //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;    private static int MAX_WAIT = 10000;    private static int TIMEOUT = 10000;    //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;    private static boolean TEST_ON_BORROW = true;    private static JedisPool jedisPool = null;    /**     * 初始化Redis连接池     */    static {        try {            JedisPoolConfig config = new JedisPoolConfig();            config.setMaxActive(MAX_ACTIVE);            config.setMaxIdle(MAX_IDLE);            config.setMaxWait(MAX_WAIT);            config.setTestOnBorrow(TEST_ON_BORROW);            // 如果redis服务不需要验证就不用AUTH            //jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT);            jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * 获取Jedis实例     * @return     */    public synchronized static Jedis getJedis() {        try {            if (jedisPool != null) {                Jedis resource = jedisPool.getResource();                return resource;            } else {                return null;            }        } catch (Exception e) {            e.printStackTrace();            return null;        }    }    /**     * 释放jedis资源     * @param jedis     */    public static void returnResource(final Jedis jedis) {        if (jedis != null) {            jedisPool.returnResource(jedis);        }    }}

测试

package com.jhb.active.redistest;import java.util.Date;import redis.clients.jedis.Jedis;public class rtest {    public static void main(String[] args){        long st = new Date().getTime();        for(int i = 0; i < 1000; i++){            Jedis j = RedisUtil.getJedis();            j.set("newname", "中文测试");            System.out.println(j.get("newname") + (i + 1));            RedisUtil.returnResource(j);        }        System.out.println("耗时" + ((double)(new Date().getTime() - st) /1000 ) + "秒");    }}
原创粉丝点击