import redis
pool = redis.ConnectionPool(host='127.0.0.1')
class RedisQueue(object):
def __init__(self, name, namespace='queue'):
self.__db= redis.Redis(connection_pool=pool)
self.key = '%s:%s' %(namespace, name)
def qsize(self):
return self.__db.llen(self.key) # 返回隊列裏面list內元素的數量
def put(self, item):
self.__db.rpush(self.key, item) # 添加新元素到隊列最右方
def get_wait(self, timeout=None):
# 返回隊列第一個元素,如果爲空則等待至有元素被加入隊列(超時時間閾值爲timeout,如果爲None則一直等待)
item = self.__db.blpop(self.key, timeout=timeout)
# if item:
# item = item[1] # 返回值爲一個tuple
return item
def get_nowait(self):
# 直接返回隊列第一個元素,如果隊列爲空返回的是None
item = self.__db.lpop(self.key)
return item
a = RedisQueue('ps')
print(a.get_wait())
# print(a.qsize())
# print(a.get_nowait())
redis 對list 操作基礎
1 BLPOP key1 [key2 ] timeout
移出並獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。
2 BRPOP key1 [key2 ] timeout
移出並獲取列表的最後一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。
3 BRPOPLPUSH source destination timeout
從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它; 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。
4 LINDEX key index
通過索引獲取列表中的元素
5 LINSERT key BEFORE|AFTER pivot value
在列表的元素前或者後插入元素
6 LLEN key
獲取列表長度
7 LPOP key
移出並獲取列表的第一個元素
8 LPUSH key value1 [value2]
將一個或多個值插入到列表頭部
9 LPUSHX key value
將一個值插入到已存在的列表頭部
10 LRANGE key start stop
獲取列表指定範圍內的元素
11 LREM key count value
移除列表元素
12 LSET key index value
通過索引設置列表元素的值
13 LTRIM key start stop
對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。
14 RPOP key
移除列表的最後一個元素,返回值爲移除的元素。
15 RPOPLPUSH source destination
移除列表的最後一個元素,並將該元素添加到另一個列表並返回
16 RPUSH key value1 [value2]
在列表中添加一個或多個值
17 RPUSHX key value
爲已存在的列表添加值