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()
 
 

最新文章

  1. javascript学习笔记一
  2. 一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵
  3. Vim ide for shell development
  4. inline-block和block的区别
  5. Js作用域与作用域链详解[转]
  6. 怎样衡量一个组员在团队中的Performance
  7. Objective-C日记-之编码对象属性
  8. Linux tail,cat,head命令
  9. kettle基础概念的学习
  10. bootbox.js官方文档
  11. 5、原生jdbc链接数据库实例-自动取款机
  12. java多线程系列10 阻塞队列模拟
  13. 17秋 软件工程 团队第五次作业 Alpha Scrum10
  14. Angular 个人深究(三)【由Input&Output引起的】
  15. HDU.2516.取石子游戏(博弈论 Fibonacci Nim)
  16. LinkServer--服务器选项
  17. python的函数介绍 位置参数 关键字参数 默认参数 参数组 *args **kwargs
  18. c++下基于windows socket的服务器客户端程序(基于UDP协议)
  19. Sandworm Attack小结
  20. Laravel5.5 生成测试数据

热门文章

  1. sam9260 闲鱼
  2. SpringBoot(三):文件下载
  3. SpringBoot 无法显示html文件 找不到html文件 如果显示html文件
  4. 百度地图的demo提示key验证错误!错误码:230;
  5. SparkR初体验2.0
  6. USB2.0学习笔记连载(十七):keil实现寄存器的配置及相关函数讲解(一)
  7. 安卓横竖屏切换时activity的生命周期
  8. C# 在托盘显示图标
  9. 利用smba实现windows上写程序,linux上运行
  10. firefox插件-HackBar介绍与试用