redis连接池理解

 

详情请查看:https://blog.csdn.net/HeatDeath/article/details/79450409

redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。
可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池

Redis 是基于内存的数据库,使用之前需要建立连接,建立断开连接需要消耗大量的时间。

使用连接池可以实现在客户端建立多个连接,需要的时候从连接池拿过来,用完了再放回去。这样就节省了建立、断开连接所消耗的时间。

Jedis resource = jedisPool.getResource();
1
这段代码返回的是一个 Redis 实例多个连接中的一个。

转载内容:

为什么使用连接池?

首先Redis也是一种数据库,它基于C/S模式,因此如果需要使用必须建立连接,稍微熟悉网络的人应该都清楚地知道为什么需要建立连接,C/S模式本身就是一种远程通信的交互模式,因此Redis服务器可以单独作为一个数据库服务器来独立存在。假设Redis服务器与客户端分处在异地,虽然基于内存的Redis数据库有着超高的性能,但是底层的网络通信却占用了一次数据请求的大量时间,因为每次数据交互都需要先建立连接,假设一次数据交互总共用时30ms,超高性能的Redis数据库处理数据所花的时间可能不到1ms,也即是说前期的连接占用了29ms,连接池则可以实现在客户端建立多个链接并且不释放,当需要使用连接的时候通过一定的算法获取已经建立的连接,使用完了以后则还给连接池,这就免去了数据库连接所占用的时间。

通过连接池获取的Jedis到底是个什么东西?

这是从连接池中获取Jedis连接实例的代码:Jedis resource = jedisPool.getResource(); 初次见到的时候对此我有误解,最初的理解是Jedis实例就是一个“数据库”连接(这里强调的是数据库而不是连接),那么多个Jedis岂不是需要多个数据库,然而键值对不都是放在一个数据库当中的么,显然这个逻辑是不成立的。后期的正确理解:这里的连接池跟Hibernate中的C3P0类似,针对同“一个”数据库可以建立多个连接,Jedis从JedisPool中获取的仅仅是一个连接,至于多个连接到达单进程单线程的Redis之后怎么处理则是另外一回事(采用多路IO复用)。
--------------------- 
作者:HeatDeath 
来源:CSDN 
原文:https://blog.csdn.net/HeatDeath/article/details/79450409 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值