python redis 實現隊列

原文鏈接:https://blog.csdn.net/qq_37049050/article/details/90668550

 

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 
爲已存在的列表添加值

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章