1、redis-py不需要显式使用连接池。

在幕后,redispy使用一个连接池来管理与Redis服务器的连接。默认情况下,每个Redis实例将依次创建自己的连接池。您可以通过将已创建的连接池实例传递给Redis类的connection_pool参数,来重写此行为并使用现有的连接池。您可以选择这样做,以便实现客户端分片或对连接的管理方式有更好的粒度控制。

2、一般写 r = Redis('127.0.0.1','6379'),别的模块导入r属性,一直保持使用这一个连接对象就可以了,不需要使用连接池,直接单例就可以。如果想无限制实例化使用同一个连接池对象,使用连接池,用法如下。

 pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
>>> r1 = redis.Redis(connection_pool=pool)
>>> r2 = redis.Redis(connection_pool=pool)
类似于这样。 控制一下,每个redis服务器只有一个连接池。
# coding=utf8
import redis
import unittest class RedisManager(object):
_pool_dict = {} def __init__(self, host='127.0.0.1', port=6379, db=0, password=''):
if (host, port, db, password) not in self.__class__._pool_dict:
print '创建一个连接池'
self.__class__._pool_dict[(host, port, db, password)] = redis.ConnectionPool(host=host, port=port, db=db, password=password)
self._r = redis.Redis(connection_pool=self._pool_dict[(host, port, db, password)])
self._ping() def get_redis(self):
"""
:rtype :redis.Redis
"""
return self._r def _ping(self):
try:
self._r.ping()
except Exception as e:
raise e class _Test(unittest.TestCase):
def test_error_conn(self):
"""测试错误的连接"""
self.assertRaises(Exception, RedisManager, password='') def test_get_redis(self):
"""正常的连接,测试连接池创建次数"""
RedisManager().get_redis()
RedisManager().get_redis()
RedisManager().get_redis()
RedisManager().get_redis()
r = RedisManager().get_redis()
self.assertIsInstance(r, redis.Redis) def test_set_key_value(self):
"""设置值"""
r = RedisManager().get_redis()
r.set('a', 'c')
self.assertEqual(r.get('a'), 'c', msg='a的值不是c') if __name__ == '__main__':
unittest.main()
 
 

关于redis连接池的更多相关文章

  1. Redis 连接池的问题

      目录 Redis 连接池的问题    1 1.    前言    1 2.解决方法    1     前言 问题描述:Redis跑了一段时间之后,出现了以下异常. Redis Timeout ex ...

  2. 红眼技术博客 » redis连接池红眼技术博客 » redis连接池

    红眼技术博客 » redis连接池 redis连接池

  3. redis连接池操作

    /** * @类描述 redis 工具 * @功能名 POJO * @author zxf * @date 2014年11月25日 */public final class RedisUtil { p ...

  4. java操作redis redis连接池

    redis作为缓存型数据库,越来越受到大家的欢迎,这里简单介绍一下java如何操作redis. 1.java连接redis java通过需要jedis的jar包获取Jedis连接. jedis-2.8 ...

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

    单机模式: package com.ljq.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; ...

  6. 压测过程中,获取不到redis连接池,发现redis连接数高

    说明:图片截得比较大,浏览器放大倍数看即可(涉及到隐私,打了码,请见谅,如果有疑问,欢迎骚扰). 最近在压测过程中,出现获取不到redis连接池的问题 xshell连接redis服务器,查看连接数,发 ...

  7. Redis连接池

    package com.lee.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; impor ...

  8. Redis】Java中使用Jedis操作Redis(Maven导入包)、创建Redis连接池

    如果我们使用Java操作Redis, 需要确保已经安装了 redis 服务及 Java redis 驱动. Maven项目可以直接在pom.xml中加入jedis包驱动: <!-- https: ...

  9. 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 jar下载地址 package com.test; import redis ...

  10. Java Redis 连接池 Jedis 工具类

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.Jedis; import re ...

随机推荐

  1. springcloud配置中心客户端配置遇到的坑

    1. 出错信息如下: 在启动配置中心的客户端时,报以下错误信息: Caused by: java.lang.IllegalArgumentException: Could not resolve pl ...

  2. JS学习 - offset家族(一)

    JS学习 - offset家族(一) 先来张图开开胃 offsetWidth offetHeight 得到对象的宽度和高度(自己的,与他人无关) offsetWidth = width + borde ...

  3. PCL点云曲面重建(1)

    在测量较小的数据时会产生一些误差,这些误差所造成的不规则数据如果直接拿来曲面重建的话,会使得重建的曲面不光滑或者有漏洞,可以采用对数据重采样来解决这样问题,通过对周围的数据点进行高阶多项式插值来重建表 ...

  4. python 获取前一天凌晨unix时间

    # -*- coding:utf-8 -*-import time now_time = int(time.time())day_time = now_time - now_time % 86400 ...

  5. Java设计模式(18)策略模式(Strategy模式)

    Strategy是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类. Stratrgy应用比较广泛,比如,公司经营业务变化图,可能有两种实现方式,一个是线条曲线, ...

  6. 【转】如果有人让你推荐Python技术书,请让他看这个列表

    入门级 <Head First Python>+ 入门级 + 微信49票 + 豆瓣评分 9.5 推荐语: 66:浅显易懂,编排的顺序特别,有大量插图.对话,不感觉枯燥 古心:通熟易懂,配有 ...

  7. [hadoop读书笔记] 第五章 MapReduce工作机制

    P205 MapReduce的两种运行机制 第一种:经典的MR运行机制 - MR 1 可以通过一个简单的方法调用来运行MR作业:Job对象上的submit().也可以调用waitForCompleti ...

  8. Ubuntu 安装软件方法

    Ubuntu软件安装有几种方式,常用的是deb包的安装方式,deb是debian系列的Linux包管理方式,Ubuntu软件安装属于debian的派生,也默认支持这种软件安装方式,当下载到一个deb格 ...

  9. SAP HR模块的基础数据表和增强配置

    信息类型是SAP HR模块数据单元,用于对人员数据的记录和维护,是HR的基础.信息类型按照其创建方式的不同可以分为:人事信息类型.组织信息类型.信息类型数据的维护主要在事物码PA30.PA40.po1 ...

  10. nginx rewrite和根据url参数location

    最近项目中涉及到旧老项目迁移,需要在nginx上做些配置,所以简单学习了下,好记性不如烂笔头,先记下来. rewrite 首先查看下nginx是否支持rewrite: ./nginx -V 不支持说明 ...