Redis Python Queue

发布时间:2019-07-30 10:53:44编辑:auto阅读(1433)

    RedisQueue.py文件内容:


    import redis


    class RedisQueue(object):

    """Simple Queue with Redis Backend"""

    def __init__(self, name, namespace='queue', **redis_kwargs):

    """The default connection parameters are: host='localhost', port=6379, db=0"""

    self.__db= redis.Redis(**redis_kwargs)

    self.key = '%s:%s' %(namespace, name)


    def qsize(self):

    """Return the approximate size of the queue."""

    return self.__db.llen(self.key)


    def empty(self):

    """Return True if the queue is empty, False otherwise."""

    return self.qsize() == 0


    def put(self, item):

    """Put item into the queue."""

    self.__db.rpush(self.key, item)


    def get(self, block=True, timeout=None):

    """Remove and return an item from the queue.


    If optional args block is true and timeout is None (the default), block

    if necessary until an item is available."""

    if block:

    item = self.__db.blpop(self.key, timeout=timeout)

    else:

    item = self.__db.lpop(self.key)


    if item:

    item = item[1]

    return item


    def get_nowait(self):

    """Equivalent to get(False)."""

    return self.get(False)





    使用


    >>> from RedisQueue import RedisQueue

    >>> q = RedisQueue('test')

    >>> q.put('hello world')


    打开另外一个窗口


    redis-cli 客户端显示结果:

    redis 127.0.0.1:6379> keys *1) "queue:test"redis 127.0.0.1:6379> type queue:testlistredis 127.0.0.1:6379> llen queue:test(integer) 1redis 127.0.0.1:6379> lrange queue:test 0 11) "helloworld"

    另外脚本可以得到:

    >>> from RedisQueue import RedisQueue>>> q = RedisQueue('test')>>> q.get()'hello world'


关键字

上一篇: Python学习路线

下一篇: python中那些时间