Redis Python Queue

2023-01-31 01:01:58 python queue redis

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'


相关文章