Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的Redis连接池我做错了什么?_Python_Redis - Fatal编程技术网

python中的Redis连接池我做错了什么?

python中的Redis连接池我做错了什么?,python,redis,Python,Redis,这就是我正在做的。当我这样做的时候,redis py会爆炸 Python 2.7.3 (default, Aug 1 2012, 05:16:07) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import redis >>> p = redis.ConnectionPool() >>> r

这就是我正在做的。当我这样做的时候,redis py会爆炸

Python 2.7.3 (default, Aug  1 2012, 05:16:07)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import redis
>>> p = redis.ConnectionPool()
>>> r = redis.Redis(connection_pool=p)
>>> p.release(r)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 355, in release
    if connection.pid == self.pid:
AttributeError: 'Redis' object has no attribute 'pid'
>>>
Python 2.7.3(默认,2012年8月1日05:16:07)
[GCC 4.6.3]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入redis
>>>p=redis.ConnectionPool()
>>>r=redis.redis(连接池=p)
>>>p.释放(r)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python2.7/dist-packages/redis/connection.py”,第355行,发行版
如果connection.pid==self.pid:
AttributeError:“Redis”对象没有属性“pid”
>>>

好的,因为没有人回答这个问题,所以我花了一些时间浏览了redis py源代码(使用源代码!),下面是我的发现。我将在这里分享它,以防其他人将来面临同样的问题

返回的Redis()对象

r = redis.Redis(connection_pool=p)
不表示redis连接。它只是一个Python对象,RedisAPI已在其上代理。当我们调用一个特定的API时,比如说r.keys(),内部代理使用传递的连接池来请求连接,然后创建命令和负载,并对从池中获得的连接进行激发。然后,它将连接返回到池。所有这些操作对API用户都是透明的

r.keys() 底线是,您可以在代码中创建任意数量的redis.redis()对象,然后丢弃它们。当连接池在Redis()对象之外管理时,Python GC将处理对象清理