Redis in python, how do you close the connection?
2024-08-30 00:26:48
down voteaccepted
Just use redis.Redis
. It uses a connection pool under the hood, so you don't have to worry about managing at that level.
If you absolutely have to use a low level connection, you need to do the response handling that is normally done for you by redis.Redis
.
Here's an example of executing a single command using the low level connection:
def execute_low_level(command, *args, **kwargs):
connection = redis.Connection(**kwargs)
try:
connection.connect()
connection.send_command(command, *args)
response = connection.read_response()
if command in redis.Redis.RESPONSE_CALLBACKS:
return redis.Redis.RESPONSE_CALLBACKS[command](response)
return response
finally:
del connection
Example usage:
response = execute_low_level(
'HGET', 'redis:key', 'hash:key', host='localhost', port=6379)
But as I said before, redis.Redis
is the way to go in 99.9% of cases.
you dont need worry about it when you use ConnectionPool.look at the source code:
def execute_command(self, *args, **options):
"Execute a command and return a parsed response"
pool = self.connection_pool
command_name = args[0]
connection = pool.get_connection(command_name, **options)
try:
connection.send_command(*args)
return self.parse_response(connection, command_name, **options)
except (ConnectionError, TimeoutError) as e:
connection.disconnect()
if not connection.retry_on_timeout and isinstance(e, TimeoutError):
raise
connection.send_command(*args)
return self.parse_response(connection, command_name, **options)
finally:
pool.release(connection)
finally,every connection will release to the pool no matter what you do, and it will assign to other client.
最新文章
- SSIS 文件系统任务无法使用变量配置目标路径
- javascript学习4
- Java中Object类
- 【转】Velocity模板(VM)语言介绍
- C# Devexpress学习--LabelControl
- string.length()与-1比较为什么会出现匪夷所思的结果
- Computer Vision的尴尬---by林达华
- javascript对链接进行动态处理化
- cocos2d-x-2.2的SimpleAudioEngine::sharedEngine()-&;gt;playEffect()计划中断bug
- myeclipse 2013 SR2 安装svn
- 写一个类时什么时候需要重写toString
- python-day2数据类型
- nginx重写rewrite的[emerg] unknown directive
- java常见题目总结
- rsa公钥和私钥的生成
- C/C++字符串使用整理
- Android实现两次点击返回键提示退出
- 自学Linux Shell1.2-Linux目录结构
- jenkins+git 构建项目
- angularjs中安卓原生APP调用H5页面js函数,js写法应注意
热门文章
- Thread 1 cannot allocate new log 的处理办法
- CodeForce 448C 木片填涂问题
- 洛谷P2058 海港
- linux mail 发邮件
- windows7 下安装使用Redis
- 前端学习之-- JavaScript
- python学习之-- redis模块基本介绍
- xml文件的schema也是经过jdk编译器编译的,如果xsd没引入完整,而xml中又用到了这些标签,就会编译不通过啊。
- 过滤器链chain.doFilter(request,response)含义
- 【转】Web Worker javascript多线程编程(一)