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 unittestclass RedisManager(object):_pool_dict = {}def __init__(self, host='127.0.0.1', port=6379, db=0, password='123456'):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._rdef _ping(self):try:self._r.ping()except Exception as e:raise eclass _Test(unittest.TestCase):def test_error_conn(self):"""测试错误的连接"""self.assertRaises(Exception, RedisManager, password='1234567')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()

 
 

转载于:https://www.cnblogs.com/ydf0509/p/9070084.html

关于redis连接池相关推荐

  1. python redis连接池获取后关闭_python通过连接池连接redis,操作redis队列

    在每次使用redis都进行连接的话会拉低redis的效率,都知道redis是基于内存的数据库,效率贼高,所以每次进行连接比真正使用消耗的资源和时间还多.所以为了节省资源,减少多次连接损耗,连接池的作用 ...

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

    其实这个是引用自网友http://blog.csdn.net/tuposky/article/details/45340183,有2个版本,差别就是ReentrantLock和synchronized ...

  3. redis连接池操作

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

  4. java操作redis redis连接池

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

  5. redis专题:redis键值设计、性能优化以及redis连接池配置

    文章目录 1.redis键值设计 ①:key设计规范 ②:value设计规范 2. 命令使用优化 3. redis连接池配置参数设计 4. redis连接池预热 5. redis的key过期删除策略 ...

  6. Java Redis 连接池 Jedis 工具类,java基础面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  7. Java的Redis连接池代码

    2019独角兽企业重金招聘Python工程师标准>>> 其实这个是引用自网友http://blog.csdn.net/tuposky/article/details/45340183 ...

  8. php redis 集群 长连接池,php如何实现redis连接池

    项目使用的是php,生产环境使用的是redis集群,连接的地址是配置的域名,每次创建连接必须要经过一次域名解析,频繁的创建链接效率低下且经常出现超时的情况,有没有在生产环境实现redis链接池的,分享 ...

  9. SpringBoot 配置 Redis 连接池

    前言 SpringBoot2.0默认采用 Lettuce 客户端来连接 Redis 服务 默认是不使用连接池的,只有配置 redis.lettuce.pool下的属性的时候才可以使用到redis连接池 ...

  10. 11.什么是Redis连接池?如何使用Redis连接池? 嘻哈的简写笔记——Redis

    1.什么是Redis连接池? Redis 和MySQL一样都有连接池,使用连接池可以***避免频繁的创建和销毁链接对象而消耗资源***: 2.如何使用Redis连接池? 创建连接池配置对象: 创建连接 ...

最新文章

  1. 统计学习圣经!经典教材《统计学习导论》Python版
  2. 使用RazorGenerator对视图View进行单元测试
  3. dmg文件转换iso ultraiso_mac去除dmg打开密码的方法
  4. ewomail 内部通讯_教你搭建自己的邮件服务器-Ubuntu 18.04下通过Docker使用EwoMail实现...
  5. cmake的使用-为什么要使用CMake
  6. SetTimer OnTimer WM_TIMER
  7. (10)FPGA顶层通用模块(学无止境)
  8. 基于JAVA+Spring+MYSQL的房屋出售系统
  9. 【Python3 爬虫】13_爬取博客园首页所有文章
  10. 印象笔记mac版 同步问题_印象笔记国际版无法登陆/同步问题
  11. matlab化函数图像示例,Matlab绘制函数图像函数示例汇总
  12. Word弹窗提示“拼写或语法错误太多,无法继续显示”的处理办法
  13. linux实用技巧:ubuntu18.04安装配置ibus中文输入法
  14. Spring Cloud Netflix 服务注册与发现 — Eureka 入门案例
  15. PDF文件有密码怎么办?
  16. 免费不限速不限存储的网盘推荐
  17. QT之xml文件读写
  18. Jenkins Pipeline预研
  19. 计算机word文档无法工作,word无法打开(WORD文档打不开_解决方法_电脑基础知识_IT/计算机_专业资料)...
  20. 好人?坏人?做真实的人

热门文章

  1. Linux学习之VMware安装Linux
  2. java接收rowtype类型_Java PhysType.getJavaRowType方法代码示例
  3. PHP笔记-随机生成cookie、后台检索、通过session获取ID增强安全性
  4. js和python交互_JSShell:一个基于python的交互式Shell
  5. php备份mysql页面_如何用PHP的页面备份、恢复Mysql数据库_php
  6. gateway 车辆网关
  7. 统计list里面相同元素个数_LeetCode 第 347 号问题:前 K 个高频元素
  8. html禁止输入字符,javascript – 如何限制在html表中使用的contenteditable中的字符输入...
  9. 1-8:学习shell之高级键盘技巧
  10. ModuleNotFoundError: No module named ‘_bz2‘(Python3.7安装某些包报错)