redis实现消息队列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis实现消息队列相关的知识,希望对你有一定的参考价值。

#!/usr/local/bin/python                                                             
                                                                                    
import redis                                                                        
import time                                                                         
                                                                                    
class RedisQueue(object):                                                           
    def __init__(self, name, namespace, **redis_args):                              
        self.key = "%s:%s" % (namespace, name)                                      
        self.__db = redis.Redis(**redis_args)                                       
                                                                                    
    def qsize(self):                                                                
        return self.__db.llen(self.key)                                             
                                                                                    
    def empty(self):                                                                
        return self.qsize() == 0                                                    
                                                                                    
    def get(self, block=True, timeout=None):                                        
        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 put(self, item):                                                            
        self.__db.rpush(self.key, item)                                             
                                                                                    
    def get_nowait(self):                                                           
        return self.get(False)                                                      
                                                                                    
                                                                                    
r = RedisQueue(test, "liyang")                                                    
begin = time.clock()                                                                
for i in range(0, 100000):      
    r.put(str(i))                                                                
end = time.clock()                                                               
print end-begin                                                                  
                                                                                 
begin = time.clock()                                                             
for i in range(0, 100000):                                                       
    a = r.get()                                                                  
end = time.clock()                                                               
print end-begin    

 

以上是关于redis实现消息队列的主要内容,如果未能解决你的问题,请参考以下文章

redis消息队列有没有

Redis 实现 消息队列

使用redis实现消息队列

Redis 竟然能用 List 实现消息队列

redis怎么做消息队列

Redis5.0 Stream实现轻量化消息队列(一文实现Java实战完整版)