Redis JedisPool

获取连接池,通常连接池为单例,这里使用 双端检测机制保证只有一个实例

public class JedisPoolUtil {

    private static volatile JedisPool jedisPool = null;

    private JedisPoolUtil() {
    }

    public static JedisPool getJedisPoolInstance() {
        if (null == jedisPool) {
            synchronized (JedisPoolUtil.class) {   //这里使用双端检测设计模式
                if (null == jedisPool) {
                    JedisPoolConfig poolConfig = new JedisPoolConfig();
                    //控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制,
                    //如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted
                    poolConfig.setMaxActive(1000);
                    poolConfig.setMaxIdle(32);  //设置剩余连接各数,如果小于这个就会抛异常
                    //表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛JedisConnectionException
                    poolConfig.setMaxWait(100*1000);
                    //获得一个jedis实例的时候是否检查连接可用性(ping()),如果为true,则得到的jedis实例均是可用的
                    poolConfig.setTestOnBorrow(true);
                    jedisPool = new JedisPool(poolConfig, "192.168.1.201", 6379);
                }
            }
        }
        return jedisPool;
    }
    /**
     * 释放
     * @param jedisPool 释放哪个池中
     * @param jedis        的哪个对象
     */
    public static void release(JedisPool jedisPool,Jedis jedis){
        if(null != jedis){
            jedisPool.returnResourceObject(jedis);
        }
    }

}

测试代码:

public class TestJedisPool {

    public static void main(String[] args) {
        JedisPool jedisPool = JedisPoolUtil.getJedisPoolInstance();

        Jedis jedis = null;

        try {
            jedis = jedisPool.getResource();

            jedis.set("aa", "bb");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JedisPoolUtil.release(jedisPool, jedis);
        }
    }

}

127.0.0.1:6379> get aa
"bb"
127.0.0.1:6379>

JedisPoolCinfig

时间: 2024-10-12 13:39:13

Redis JedisPool的相关文章

Redis2.8 单个redis JedisPool 与spring的集成配置

1,spring配置 <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">             <!-- 控制一个pool可分配多少个jedis实例 -->          <property name="maxTotal" value="${redis.maxTotal}"/>        

jedisPool.returnBrokenResource 弃用

for (int i = 0; i < 1000000 ; i++) { //使用Pool的方式 调用Redis JedisPool jedisPool = SpringContextHolder.getBean(JedisPool.class); Jedis jedis = jedisPool.getResource(); String key = "testKey"; jedis.set(key,"fasdfasdfasdfasdfasdf"); Stri

redis JAVA客户端(Jedis)测试使用

一.jedis连接(maven项目) package redis; import net.sf.json.JSONObject; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import java.util.*; /** * Created by Administrator on 2016/6/14. */ p

Redis 实现锁

1 public boolean tryLock2(String key, int timeout, int expiretime, int sleeptime) throws Exception { 2 3 Jedis redis = jedisPool.getResource(); 4 try { 5 long nano = System.nanoTime(); 6 do { 7 Long i = redis.setnx(key, "key"); 8 jedisPool.retur

jedispool 连 redis 高并发卡死

java端在使用jedispool 连接redis的时候,在高并发的时候经常卡死,或报连接异常,JedisConnectionException,或者getResource 异常等各种问题 在使用jedispool 的时候一定要注意两点 1. 在获取 jedisPool和jedis的时候加上线程同步,保证不要创建过多的jedispool 和 jedis 2. 用完Jedis实例后需要返还给JedisPool 整理了一下redis工具类,通过大量测试和高并发测试的 package com.casp

jedispool 连 redis

java端在使用jedispool 连接redis的时候,在高并发的时候经常卡死,或报连接异常,JedisConnectionException,或者getResource 异常等各种问题 在使用jedispool 的时候一定要注意两点 1. 在获取 jedisPool和jedis的时候加上线程同步,保证不要创建过多的jedispool 和 jedis 2. 用完Jedis实例后需要返还给JedisPool 整理了一下redis工具类,通过大量测试和高并发测试的. package com.uti

redis学习及实践3---Jedis、JedisPool、Jedis分布式实例介绍

一.相关jar包 主要用到的是jedis的核心包,笔者用到的是2.1.0版:另根据"池"的应用等还需要用到相关jar包.下图是笔者建立的简单的jedis测试project图: jar包的文档可参考: http://www.boyunjian.com/javadoc/org.apache.servicemix.bundles/org.apache.servicemix.bundles.jedis/2.1.0_1/_/redis/clients/jedis/JedisShardInfo.h

使用jedisPool管理jedis,使用jedis操作redis

ps:jedis是redis在java中的客户端操作工具 package com.test; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import java.util.List; 6 import java.util.Map; 7 8 import org.junit.Before; 9 import org.junit.Test; 10 11 import redis.clients.jedis.Jedis; 1

redis 工具类 单个redis、JedisPool 及多个redis、shardedJedisPool与spring的集成配置

单个redis.JedisPool <!-- start redis配置 --> <!-- redis的连接池pool,不是必选项:timeout/password --> <bean id = "jedisPool" class="redis.clients.jedis.JedisPool"> <constructor-arg index="0" ref="jedisPoolConfig&qu