import redis


class RedisHelper(object):
    _pool: redis.ConnectionPool = None
    _instance = None

    def __init__(self):
        if not self._instance:
            self._pool = self._get_pool()
            self._instance = self

    def _get_pool(self) -> redis.ConnectionPool:
        if self._pool is None:
            self._pool = redis.ConnectionPool(
                host="r-bp1mb0v08fqi4hjffupd.redis.rds.aliyuncs.com",  # 外网地址
                port=6379,
                db=0,
                password="Wqsd@2019",
                max_connections=100)
        return self._pool

    def get_client(self) -> redis.Redis:
        pool = self._get_pool()
        client = redis.Redis(connection_pool=pool)
        return client

    def close(self):
        if self._pool:
            self._pool.disconnect(inuse_connections=True)