redis连接池的标准用法:

Posted 安迪9468

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis连接池的标准用法:相关的知识,希望对你有一定的参考价值。

 

from .conf import HOST, PORT, POOL_NAME
import redis

redis_pool = redis.ConnectionPool(host=HOST, port=PORT, max_connections=20)


class RedisOperator(object):
    """Redis 操作类"""

    def __init__(self):
        """初始化 Redis 连接"""
        # self._conn = redis.Po(HOST, PORT)
        self._conn = redis.Redis(connection_pool=redis_pool)

    def gets(self, total=1):
        """从池中返回给定数量的代理(取出但不删除),当 total > pool.size
        时,将返回 pool.size 个代理。
        :param total: 返回的数量
        :return: proxies, size=total
        """
        tmp = self._conn.srandmember(POOL_NAME, total)
        return [s.decode(‘utf-8‘) for s in tmp]

    def puts(self, proxies):
        """将一定量的代理压入 pool 中
        :param proxies:
        :return:
        """
        self._conn.sadd(POOL_NAME, *proxies)

    def pop(self):
        """弹出一个代理(取出并删除)
        :return: proxy
        """
        # if self.size == 0:
        #     raise PoolEmptyError
        return self._conn.spop(POOL_NAME).decode(‘utf-8‘)

    @property
    def size(self):
        """返回 pool 的 size
        :return: pool.size
        """
        return self._conn.scard(POOL_NAME)

    def _flush(self):
        """清空 Redis 中的全部内容
        :return: None
        """
        self._conn.flushall()

  

以上是关于redis连接池的标准用法:的主要内容,如果未能解决你的问题,请参考以下文章

C3P0连接池的使用

C3P0连接池的使用

线程池的使用场景和代码实现!

线程池的用法及思考

c3p0数据库连接池的使用详解

HttpClient 基于连接池的使用