zoukankan      html  css  js  c++  java
  • python redis搭建队列服务

    # -*- coding:utf-8 -*-

    import redis

    # from redis_queue
    r = redis.Redis(host='127.0.0.1', port=6379, password='liang')


    class RedisQueue(object):
    def __init__(self, name, namespace='queue'):
    # redis的默认参数为:host='localhost', port=6379, db=0, 其中db为定义redis database的数量
    self.__db = redis.Redis(host='127.0.0.1', port=6379, password='liang',db=0) # 链接数据库
    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

    入队列
    # -*- coding:utf-8 -*-
    from redis_queue import RedisQueue
    import time

    q = RedisQueue('rq') # 新建队列名为rq
    for i in range(5):
    q.put(i)
    print "input.py: data {} enqueue {}".format(i, time.strftime("%c"))
    # time.sleep(1)


    print q.qsize()



    出队列
    from redis_queue import RedisQueue
    import time

    q = RedisQueue('rq')
    while 1:
    result = q.get_wait()
    # if not result:
    # break
    # print "output.py: data {} out of queue {}".format(result, time.strftime("%c"))
    # time.sleep(2)
    print result









  • 相关阅读:
    工厂方法模式
    命名空间的规划
    Download Manager
    Intent(二)
    Intent (一)
    Fragment (一)
    修改环境变量需不需要重启电脑
    Spring mvc和SSH如何取舍?
    ORA-01795: 列表中的最大表达式数为1000的解决方法详解
    apache与tomcate的区别
  • 原文地址:https://www.cnblogs.com/siconglove/p/10573290.html
Copyright © 2011-2022 走看看