- 浏览: 564511 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (618)
- java (109)
- Java web (43)
- javascript (52)
- js (15)
- 闭包 (2)
- maven (8)
- 杂 (28)
- python (47)
- linux (51)
- git (18)
- (1)
- mysql (31)
- 管理 (1)
- redis (6)
- 操作系统 (12)
- 网络 (13)
- mongo (1)
- nginx (17)
- web (8)
- ffmpeg (1)
- python安装包 (0)
- php (49)
- imagemagic (1)
- eclipse (21)
- django (4)
- 学习 (1)
- 书籍 (1)
- uml (3)
- emacs (19)
- svn (2)
- netty (9)
- joomla (1)
- css (1)
- 推送 (2)
- android (6)
- memcached (2)
- docker、 (0)
- docker (7)
- go (1)
- resin (1)
- groovy (1)
- spring (1)
最新评论
-
chokee:
...
Spring3 MVC 深入研究 -
googleyufei:
很有用, 我现在打算学学Python. 这些资料的很及时.
python的几个实用网站(转的) -
hujingwei1001:
太好了找的就是它
easy explore -
xiangtui:
例子举得不错。。。学习了
java callback -
幻影桃花源:
太好了,謝謝
Spring3 MVC 深入研究
关于Redis的Python客户端的连接池问题
在一次分享中提到了Redis的长短链接的问题,引发了对redis-py的连接池机制的讨论。
通过源码发现,每创建一个Redis实例都会构造出一个ConnectionPool,每一次访问redis都会从这个连接池得到一个连接,访问完成之后,会把该连接放回连接池,下面是发送命令访问redis的execute_command方法实现:
Python代码 收藏代码
352 #### COMMAND EXECUTION AND PROTOCOL PARSING ####
353 def execute_command(self, *args, **options):
354 "Execute a command and return a parsed response"
355 pool = self.connection_pool
356 command_name = args[0]
357 connection = pool.get_connection(command_name, **options)
358 try:
359 connection.send_command(*args)
360 return self.parse_response(connection, command_name, **options)
361 except ConnectionError:
362 connection.disconnect()
363 connection.send_command(*args)
364 return self.parse_response(connection, command_name, **options)
365 finally:
366 pool.release(connection)
当然,也可以构造一个ConnectionPool,在创建Redis实例时,可以将该ConnectionPool传入,那么后续的操作会从给定的ConnectionPool获得连接。
redis-py的作者在文档中也有详细说明:
Connection Pools
Behind the scenes, redis-py uses a connection pool to manage connections to a Redis server. By default, each Redis instance you create will in turn create its own connection pool. You can override this behavior and use an existing connection pool by passing an already created connection pool instance to the connection_pool argument of the Redis class. You may choose to do this in order to implement client side sharding or have finer grain control of how connections are managed.
>>> pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
>>> r = redis.Redis(connection_pool=pool)
关于redis-server的最大客户端数量问题
redis的文档这样说:
# Set the max number of connected clients at the same time. By default there
# is no limit, and it's up to the number of file descriptors the Redis process
# is able to open. The special value '0' means no limits.
# Once the limit is reached Redis will close all the new connections sending
# an error 'max number of clients reached'.
#
# maxclients 128
1) redis默认没有设置最大的连接客户端数量,这个数量取决于redis进程能够打开的文件句柄数量。
2) 可以手工配置最大的连接池数量。
在一次分享中提到了Redis的长短链接的问题,引发了对redis-py的连接池机制的讨论。
通过源码发现,每创建一个Redis实例都会构造出一个ConnectionPool,每一次访问redis都会从这个连接池得到一个连接,访问完成之后,会把该连接放回连接池,下面是发送命令访问redis的execute_command方法实现:
Python代码 收藏代码
352 #### COMMAND EXECUTION AND PROTOCOL PARSING ####
353 def execute_command(self, *args, **options):
354 "Execute a command and return a parsed response"
355 pool = self.connection_pool
356 command_name = args[0]
357 connection = pool.get_connection(command_name, **options)
358 try:
359 connection.send_command(*args)
360 return self.parse_response(connection, command_name, **options)
361 except ConnectionError:
362 connection.disconnect()
363 connection.send_command(*args)
364 return self.parse_response(connection, command_name, **options)
365 finally:
366 pool.release(connection)
当然,也可以构造一个ConnectionPool,在创建Redis实例时,可以将该ConnectionPool传入,那么后续的操作会从给定的ConnectionPool获得连接。
redis-py的作者在文档中也有详细说明:
Connection Pools
Behind the scenes, redis-py uses a connection pool to manage connections to a Redis server. By default, each Redis instance you create will in turn create its own connection pool. You can override this behavior and use an existing connection pool by passing an already created connection pool instance to the connection_pool argument of the Redis class. You may choose to do this in order to implement client side sharding or have finer grain control of how connections are managed.
>>> pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
>>> r = redis.Redis(connection_pool=pool)
关于redis-server的最大客户端数量问题
redis的文档这样说:
# Set the max number of connected clients at the same time. By default there
# is no limit, and it's up to the number of file descriptors the Redis process
# is able to open. The special value '0' means no limits.
# Once the limit is reached Redis will close all the new connections sending
# an error 'max number of clients reached'.
#
# maxclients 128
1) redis默认没有设置最大的连接客户端数量,这个数量取决于redis进程能够打开的文件句柄数量。
2) 可以手工配置最大的连接池数量。
发表评论
-
Django静态文件处理总结
2015-05-13 13:59 538原文地址:http://blog.csdn.net/wenxu ... -
原 异步非阻塞机制与多线程阻塞机制在处理并发耗时等待任务上的效率对比分析
2015-04-21 10:05 695原文地址:http://my.oschina.net/mall ... -
Django报错“_mysql_exceptions.Warning: Incorrect string value: ‘\xE6\xB5…’ for colu
2015-03-25 15:50 1000原文地址:http://www.tuicool.com/art ... -
django使用mysql时的中文存储问题 - [python]
2015-03-25 15:36 1504原文地址:http://www.blogbus.com/831 ... -
NIO学习笔记——解决“服务器端cpu占用率高”
2015-01-29 10:17 989原文地址:http://blog.csdn ... -
python 调用 php 实例
2014-06-23 14:09 2625原文地址:http://hi.baidu.com/ji_hai ... -
php调用python
2014-06-23 14:08 792原文地址:http://blog.163.com/darwin ... -
uwsgi python ssl编译问题记录
2014-06-19 14:24 876uwsgi python ssl编译问题记录 发表于6个月前( ... -
python2.7 安装ssl模块
2014-06-19 14:22 3219python2.7 安装ssl模块 2012-02-28 13 ... -
Centos6.5下升级Python 2.6.6 to python 2.7.3
2014-06-19 13:53 655Centos6.5下升级Python 2.6.6 to pyt ... -
翻译:redis-py 说明文件 (2012-05-30 17:55:52)
2014-06-04 10:22 457翻译:redis-py 说明文件 (2012-05-30 17 ... -
Windows下 Python 安装包的配置
2014-03-22 10:23 6561、下载安装 Python python-2.7.2.msi ... -
[翻译]深入理解Tornado——一个异步web服务器
2014-03-07 15:16 1642[翻译]深入理解Tornado— ... -
多版本Python共存[支持使用pip安装包]
2014-02-28 10:59 1145多版本Python共存[支持使 ... -
Django 数据库访问性能优化
2013-09-05 15:22 684Django 数据库访问性 ... -
Python六大开源框架对比:Web2py略胜一筹
2013-08-21 11:29 827Python是一门动态、面向对象语言。其最初就是作为一门面向 ... -
Python 代码调试技巧
2013-08-15 18:11 872使用 pdb 进行调试 pdb 是 python 自带的 ... -
python urlencode 编码
2013-07-05 13:28 964urlencode 调用方法 urlencode的参 ... -
window下使用virtualenv
2013-06-30 15:26 1111--- window下使用virtualenv -- ... -
浅析python的metaclass
2013-06-30 11:12 810分享下自己对python的met ...
相关推荐
一个简单的支持多个db的redis连接池一个简单的支持多个db的redis连接池一个简单的支持多个db的redis连接池一个简单的支持多个db的redis连接池一个简单的支持多个db的redis连接池一个简单的支持多个db的redis连接池一...
- **连接池**:为了优化性能,通常会使用连接池来复用连接,避免频繁创建和关闭连接。 - **心跳检测**:客户端和服务器之间定期发送心跳包,确保连接活跃,及时发现网络中断。 6. **安全与性能** - **SSL/TLS...
**Python-redis-py:Redis的Python客户端** `redis-py`是Python社区广泛使用的Redis数据库的客户端库,它提供了一种简单而高效的方式来与Redis数据存储进行交互。Redis是一种高性能的键值对数据存储系统,常用于...
**Python SSDBYA:SSDB的Python客户端** Python SSDBYA是针对SSDB数据库的Python接口,它旨在作为Redis的NoSQL数据库替代品。SSDB(Simple Scalable Database)是一款高性能、可扩展的键值存储系统,适用于大量数据...
这可能是一个包含 Redis 连接池实现的 Java 库,如 JedisPool,它简化了 Redis 客户端连接管理,提供了连接池的配置和管理功能。使用这个库,开发者可以方便地在 Java 应用中集成 Redis,并有效管理 Redis 连接。 ...
2. **PyRedis(Python客户端)**:Python的PyRedis也进行了相应升级,支持连接池和命令管道,同时增加了对Redis 2.8新特性的兼容性,让Python开发者也能享受到这些性能提升。 3. **其他客户端**:诸如Node.js的...
3. 连接池:为了提高性能,客户端通常会使用连接池来管理多个连接,避免频繁的建立和关闭连接。 4. 发布/订阅:Redis客户端支持发布订阅模式,允许客户端订阅特定频道,当有消息发布到该频道时,所有订阅者都会收到...
- **连接池管理**:自动维护连接池,优化资源使用,避免频繁建立和关闭连接的开销。 - **自动重连**:在连接断开时,`aredis` 可以自动尝试重新连接到 Redis 服务器。 - **批量操作**:支持批处理命令,提高执行效率...
可以直接建立一个连接池,然后作为参数传递给 Redis,实现多个 Redis 实例共享一个连接池。 操作 String 操作 String 是 Redis 中的一种基本操作。Redis 中的 String 在内存中按照一个 name 对应一个 value 来存储...
- 编程语言客户端:几乎所有的主流编程语言(如 Python、Java、Node.js、C#、Go 等)都有对应的 Redis 客户端库,这些库提供了一套 API 来实现与 Redis 的连接、数据操作等功能。 2. **连接方式**: - 直接连接:...
Redis的Python客户端`redis-py`是一个用于与Redis数据库交互的Python库,它提供了丰富的功能,使得在Python中操作Redis变得简单易行。本篇文档将详细介绍`redis-py`的安装、基本使用、API参考及一些详细说明。 1. *...
5. **Python客户端**:如Redisco,它提供了简单的Python接口,如`r.set('key', 'value')`用于设置键值对,`r.get('key')`用于获取键的值。此外,Redisco还支持pipeline(批量命令执行)、连接池管理等功能,提高性能...
- **连接超时**:配置客户端连接服务器的超时时间,避免因网络问题导致的阻塞。 - **重试策略**:在连接失败时,客户端可能有重试机制,如 Exponential Backoff。 - **命令缓冲**:客户端可以先将命令放入缓冲区...
Python-txRedis是针对Twisted框架的一个高效、异步的Redis客户端库,它允许你在Twisted事件循环中无缝地操作Redis服务器。这个库是为了解决在非阻塞环境中进行数据库交互的需求,使得你的Python应用在处理大量并发...
- **连接池**:为了优化性能,客户端通常会使用连接池管理与Redis服务器的连接,避免频繁创建和关闭连接。 - **事务**:Redis支持事务,客户端可以发送一组命令,然后一次性执行,保证命令的原子性。 - **发布/...
有些客户端库支持连接池,可以复用已建立的连接,提高性能。 5. **异常处理**:在使用RedisClient时,可能会遇到网络问题、服务器错误等异常情况,因此需要编写适当的错误处理代码。 除了基本的键值操作,...
RedisClient 是一个用于连接和操作 Redis 数据库的客户端库,它是许多编程语言中常见的实现,例如在 Python、Java、Node.js、C# 和其他语言中都有对应的版本。这个客户端库为开发者提供了方便的 API,使得与 Redis ...
1. **Python的并发编程**:为了提高性能,`pydis`可能使用了Python的异步I/O模型,如`asyncio`库,实现非阻塞的网络通信,允许在同一时间处理多个客户端连接。 2. **数据结构实现**:Redis以其高效的数据结构著称,...