python讀寫redis時(shí),到底需不需要關(guān)閉redis連接池連接?
importredis
defRedisUtils():
pool=redis.ConnectionPool(host='172.8.10.145',port=6379,password="xxxxxx",decode_responses=True)
r=redis.Redis(connection_pool=pool)
returnr
一般說法:如果使用連接池就不需要關(guān)閉。當(dāng)我們用Redis和StrictRedis創(chuàng)建連接時(shí),其實(shí)內(nèi)部實(shí)現(xiàn)并沒有主動(dòng)給我創(chuàng)建一個(gè)連接,我們獲得的連接是連接池提供的連接,這個(gè)連接由連接池管理,所以我們無需關(guān)注連接是否需要主動(dòng)釋放的問題。另外連接池有自己的關(guān)閉連接的接口,一旦調(diào)用該接口,所有連接都將被關(guān)閉。
但是實(shí)際storm項(xiàng)目使用當(dāng)中報(bào)以下錯(cuò)誤:
ConnectionError:maxnumberofclientsreached
超過連接數(shù),說明連接沒有關(guān)閉,因此調(diào)用基礎(chǔ)連接池的disconnect方法關(guān)閉連接:
if__name__=="__main__":
r=RedisUtils()
r.connection_pool.disconnect()
ConnectionPool.disconnect()實(shí)際上關(guān)閉了從該連接池打開的所有連接。但是,它不會阻止打開新連接。
以上內(nèi)容為大家介紹了python培訓(xùn)之如何關(guān)閉redis,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。