python使用連接配接池操作redis資料庫
環境準備
概念
程式示例
運作結果
環境準備
準備好ubntu18.04虛拟機,并且安裝redis,pyton等環境。
環境準備
概念
本示例采用單例模式,建立redis連接配接池。這樣可以在應用程式的任何地方使用相同的連接配接池,節省系統開銷
程式示例
'''
使用單例模式建立redis 連結池
'''
from redis import ConnectionPool
import threading
import time
class redis_pool(object):
_instance_lock = threading.Lock()
pool = ConnectionPool(host='localhost', port=6379, db=0)
def __init__(self):
time.sleep(1)
@classmethod
def instance(cls, *args, **kwargs):
if not hasattr(redis_pool, "_instance"):
with redis_pool._instance_lock:
if not hasattr(redis_pool, "_instance"):
redis_pool._instance = redis_pool(*args, **kwargs)
return redis_pool._instance
if __name__ == "__main__":
def task(arg):
obj = redis_pool.instance()
print(obj)
print(obj.pool)
for i in range(10):
t = threading.Thread(target=task,args=[i,])
t.start()
time.sleep(2)
print('end')
obj = redis_pool.instance()
print(obj)
print(obj.pool)
運作結果
ConnectionPool>
ConnectionPool>
ConnectionPool>
ConnectionPool>
ConnectionPool>
ConnectionPool>
ConnectionPool>
ConnectionPool>
ConnectionPool>
ConnectionPool>