Redis-py cung cấp một nhóm kết nối cho bạn mà từ đó bạn có thể lấy một kết nối. Nhóm kết nối tạo một tập hợp các kết nối mà bạn có thể sử dụng khi cần thiết (và khi hoàn tất - kết nối được trả về nhóm kết nối để tái sử dụng tiếp). Việc cố gắng tạo kết nối nhanh chóng mà không loại bỏ chúng (tức là không sử dụng nhóm hoặc không sử dụng nhóm đúng cách) sẽ khiến bạn có quá nhiều kết nối để redis (cho đến khi bạn đạt đến giới hạn kết nối).
Bạn có thể chọn thiết lập nhóm kết nối trong phương thức init và đặt nhóm toàn cầu (bạn có thể xem xét các tùy chọn khác nếu không thoải mái với toàn cầu).
redis_pool = None
def init():
global redis_pool
print("PID %d: initializing redis pool..." % os.getpid())
redis_pool = redis.ConnectionPool(host='10.0.0.1', port=6379, db=0)
Sau đó, bạn có thể truy xuất kết nối từ một nhóm như sau:
redis_conn = redis.Redis(connection_pool=redis_pool)
Ngoài ra, tôi giả sử bạn đang sử dụng Rentis cùng với redis-py vì nó sẽ cải thiện hiệu suất trong một số trường hợp nhất định. Bạn cũng đã kiểm tra số lượng kết nối mở tới máy chủ redis với thiết lập hiện tại của mình chưa vì nó rất có thể là khá cao? Bạn có thể sử dụng lệnh INFO để lấy thông tin đó:
redis-cli info
Kiểm tra Khách hàng trong đó bạn sẽ thấy " connect_clients "trường sẽ cho bạn biết có bao nhiêu kết nối bạn đã mở tới máy chủ redis ngay lúc đó.