利用redis制作一个队列

        首先要了解什么是队列。

        队列:常用数据结构之一,队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

        建立顺序队列结构必须为其静态分配或动态申请一片连续的存储空间,并设置两个指针进行管理。一个是队头指针front,它指向队头元素;另一个是队尾指针rear,它指向下一个入队元素的存储位置,如图所示

        每次在队尾插入一个元素是,rear增1;每次在队头删除一个元素时,front增1。随着插入和删除操作的进行,队列元素的个数不断变化,队列所占的存储空间也在为队列结构所分配的连续空间中移动。当front=rear时,队列中没有任何元素,称为空队列。当rear增加到指向分配的连续空间之外时,队列无法再插入新元素,但这时往往还有大量可用空间未被占用,这些空间是已经出队的队列元素曾经占用过得存储单元。

        

顺序队列中的溢出现象:

(1) "下溢"现象:当队列为空时,做出队运算产生的溢出现象。“下溢”是正常现象,常用作程序控制转移的条件。

(2)"真上溢"现象:当队列满时,做进栈运算产生空间溢出的现象。“真上溢”是一种出错状态,应设法避免。

(3)"假上溢"现象:由于入队和出队操作中,头尾指针只增加不减小,致使被删元素的空间永远无法重新利用。当队列中实际的元素个数远远小于向量空间的规模时,也可能由于尾指针已超越向量空间的上界而不能做入队操作。该现象称为"假上溢"现象。

        队列还有一种队列叫做循环队列,我这次的使用当中没有用到,这里就不详细的介绍了。

 

        这次项目当中,我将队列的概念运用在redis当中,而因为redis本身的特性,做队列是非常合适的,方法其实也很简单,在redis里面弄一个列表,我们的数据从左边进,再从右边进,就好了。

 

首先通过redis的包链接redis。

db_redis = redis.StrictRedis(host='127.0.0.1', port=6379, decode_responses=True, charset='UTF-8', encoding='UTF-8')

接下来也非常简单,分别写2个函数,是从左边入数据和从右边拿数据。

左边入

def push_redis_L(name_L):

        db_redis.lpush('name_list', name_L)

右边取

def pop_redis_R(name_R):

        res = db_redis.rpop(name_R)

         return res

在右边取的时候,如果没有数据,会返回None,所以通过这个特性既可以判断是否有数据了。

 

网友评论

0条评论

发表

网友评论

0条评论

发表

最新评论

推荐文章

彩龙

Copyright © 2008-2020 彩龙社区(https://www.clzg.cn) 版权所有 All Rights Reserved.

免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。

经营许可证编号:滇B2-20090009-7

下载我家昆明APP 下载彩龙社区APP