ServiceStack.Redis连接池不起作用的问题处理

在新的项目中用到了Redis做ORM的二级缓存,一开始是每次New一个新的Client去连接服务器,发现没过多久,服务器的连接池就爆掉了,于是用PooledRedisClientManager来做客户端连接池的管理,但是发现,无论怎么设置链接池的数量,客户端发起的连接数根本不受控制,还是一次一个新连接,很是郁闷,上Stackoverflow上搜了很久,没有一个办法能解决问题的,无奈之下只能连ServiceStack.Redis的源码进行调试,百般努力下终于发现端倪,罪魁祸首是下面这段代码:

由于这个项目中用到了Twemproxy,下面写着Twemproxy not support INFO command,这导致了每次连接Client都会去试图获取INFO信息,获取不到,就把连接的状态标志为HadExceptions = true,等到新的连接请求过来时,就会因为HadExceptions = true,而去关闭老的连接,再启一个新连接,这时连接池就一点用都没了,知道这个原因后,接下来怎么改就按大家自己的想法了,我的做法是简单粗暴的在获取版本号的地方给一个版本号,不再去发起INFO 请求,解决了这个问题。

时间: 2024-08-15 04:03:55

ServiceStack.Redis连接池不起作用的问题处理的相关文章

python 基础 10.0 nosql 简介--redis 连接池及管道

一. NOSQL 数据库简介 NoSQL 泛指非关系型的数据库.非关系型数据库与关系型数据库的差别 非关系型数据库的优势: 1.性能NOSQL 是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL 层的解析,所以性能非常高. 2.可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展. 关系型数据库的优势: 1. 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询. 2.事务支持使得对于安全性能很高的数据访问要求得以实现.对于这两类数据

python 里的 redis 连接池的原理

python设置redis连接池的好处: 通常情况下,需要连接redis时,会创建一个连接,基于这个连接进行redis操作,操作完成后去释放,正常情况下,这是没有问题的,但是并发量较高的情况下,频繁的连接创建和释放对性能会有较高的影响,于是连接池发挥作用. 连接池的原理:‘预先创建多个连接,当进行redis操作时,直接获取已经创建好的连接进行操作.完成后,不会释放这个连接,而是让其返回连接池,用于后续redis操作!这样避免连续创建和释放,从而提高了性能! import redis pool =

redis 连接池 - 转载

所需jar:jedis-2.1.0.jar和commons-pool-1.5.4.jar Jedis操作步骤如下:1->获取Jedis实例需要从JedisPool中获取:2->用完Jedis实例需要返还给JedisPool:3->如果Jedis在使用过程中出错,则也需要还给JedisPool: package com.ljq.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; imp

java中使用jedis操作redis(连接池方式)

1 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; 12 13 public class TestRedis

Java的Redis连接池代码性能不错

其实这个是引用自网友http://blog.csdn.net/tuposky/article/details/45340183,有2个版本,差别就是ReentrantLock和synchronized.另外原作者使用了断言,我觉得这个还是不用为好. ReentrantLock版 import java.util.concurrent.locks.ReentrantLock; import org.apache.commons.lang.StringUtils; import org.apache

day24——NoSQL简介、redis服务搭建、redis连接池、redis管道

一.Redis 安装 yum install -y epel-releaseyum install -y gcc jemalloc-devel wgetcd /usr/local/srcwget https://codeload.github.com/antirez/redis/tar.gz/2.8.21 -O redis-2.8.21.tar.gztar xf redis-2.8.21.tar.gzcd redis-2.8.21makemake PREFIX=/usr/local/redis

三:Redis连接池、JedisPool详解、Redisi分布式

单机模式: 1 package com.ljq.utils; 2 3 import redis.clients.jedis.Jedis; 4 import redis.clients.jedis.JedisPool; 5 import redis.clients.jedis.JedisPoolConfig; 6 7 /** 8 * Redis操作接口 9 * 10 * @author NiceCui 11 * @version 1.0 2017-6-14 上午08:54:14 12 */ 13

Java Redis 连接池 Jedis 工具类

import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import java.io.IOException; import java.io.InputStream; import java.util.Prop

redis连接池 jedis-2.9.0.jar+commons-pool2-2.4.2.jar

java使用Redis连接池  jar包为 jedis-2.9.0.jar+commons-pool2-2.4.2.jar 1 package com.test; 2 3 import redis.clients.jedis.Jedis; 4 import redis.clients.jedis.JedisPool; 5 import redis.clients.jedis.JedisPoolConfig; 6 7 public class RedisUtil { 8 //Redis服务器IP