Edited at

redis.pyのConnectionPoolの実装よんだ

More than 5 years have passed since last update.

利用できるコネクションと使ってるコネクション

available_connections で利用できるコネクションのlist

_created_connections で今まで作ったコネクションの総数

_in
use_connection で今使っているコネクションのset

get_connectionメソッドでavailable_connectionsから利用できるコネクションがあればpopでとってくる。ないならmakeconnectionで新規コネクションをつくり、_in_use_connectionにaddする

releaseメソッドでコネクションをpookに返却する。(in_use_connectionからremoveし、available_connectionsとappend)

disconnectでpoolの開放

実際でどうつかわれるかは

StrictRedisクラスのexecute_commandメソッドで

poolからget_connectionメソッドでコネクションを取得

コネクションを利用してコマンドを実行し、コマンドの実行が正常でも異常でも終了したら(finally)releaseでコネクションを返す(異常の場合はpoolからのコネクションを破棄し、新しいコネクションを生成)

ふぅ