天天看點

python單例模式資料庫連接配接池_python使用連接配接池操作redis資料庫

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>