社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Redis

如何在Redis中实现队列管理系统

Nofal • 5 年前 • 870 次点击  

我试图用redis实现排队系统。假设我们有这个清单:

> LPUSH listTickets 1 2 3 4 5 6 7 8 9

作为移动应用用户,有人被分配到4号和6号。现在我想向他们展示前面有多少张票(还要计算等待的估计时间)。现在看来这很容易,

> LPOP listTicket
"4"

然后我们广播结果(当前要调用的票号),然后在移动应用程序中,每个人都将从自己的票号中减去结果。比如我现在的票是 6 所以 6-4=2 这样每个用户都知道前面有多少张票

但是,一旦您想添加功能,让用户删除他们的票证或将其推到队列的末尾,事情就会变得复杂。例如删除后

> LRANGE listTicket 0 -1 
1) "2"
2) "4"
3) "6"
4) "7"
5) "8"

当我们 LPOP listTicket 我们会得到2号,而带6号票的移动应用程序将计算6-2,得到4,这是错误的计算。

你有什么算法吗?每次有人删除他们的票证时获取列表中每个票证的索引是一个昂贵的计算过程吗?我应该把所有的票都排成一队,让用户自己计算位置吗?


我希望这个系统是可扩展的。redis节点服务器也可以处理总共5万个(通过不同队列或列表)连接的移动应用程序,在它们预订的票务队列中获得它们的排名。

我想用 ZRANK 但这将如何加载服务器?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52841
 
870 次点击