Questions tagged «redis»

3
如何在Redis上实现消息队列?
为什么要对Redis进行排队? 我的印象是Redis可以很好地实现排队系统。到目前为止,我们一直在使用MySQL数据库进行轮询或RabbitMQ。有了RabbitMQ,我们遇到了很多问题-客户端库非常差且存在漏洞,我们不想花费太多的开发人员时间来修复它们,也不希望在服务器管理控制台上遇到一些问题,等等。至少,我们没有掌握几毫秒,也没有认真提高性能,因此,只要系统的体系结构能够智能地支持队列,我们​​就可能处于良好状态。 好的,这就是背景。本质上,我有一个非常经典,简单的队列模型-几个生产者在生产工作,几个消费者在消费工作,生产者和消费者都需要能够智能地进行扩展。事实证明,天真PUBSUB是行不通的,因为我不希望所有订阅者都消费工作,我只希望一个订阅者可以接收工作。乍一看,在我看来,这BRPOPLPUSH是一个明智的设计。 我们可以使用BRPOPLPUSH吗? 基本设计BRPOPLPUSH是您有一个工作队列和一个进度队列。当消费者收到工作时,它会自动将项目推送到进度队列中,而当工作完成时,它就是工作LREM了。如果客户死了,这可以防止工作混乱,并使监视工作变得很轻松-例如,我们可以判断是否存在导致消费者花费大量时间来执行任务的问题,此外还可以判断是否存在大量任务。 它确保 作品交付给了一位消费者 工作在进度队列中结束,因此如果消费者使用它,则不会出现黑洞 缺点 对于我来说,我发现的最好的设计实际上没有使用实际上是很奇怪的,PUBSUB因为这似乎是大多数有关Redis排队的博客所关注的内容。所以我觉得我缺少明显的东西。我看到PUBSUB不使用两次任务就使用的唯一方法是简单地推送一个通知,通知工作已经到达,然后消费者可以无阻塞地进行通知RPOPLPUSH。 一次请求一个以上的工作项目是不可能的,这似乎是一个性能问题。对于我们的情况而言,这不是一个很大的选择,但显然,该操作不是针对高吞吐量或这种情况而设计的 简而言之:我是否缺少任何愚蠢的东西? 还添加了node.js标记,因为这是我最常使用的语言。考虑到Node的单线程和非阻塞性质,它可能会在实现方面提供一些简化,但是此外,我正在使用node-redis库,并且解决方案也应该或可以对其优点和缺点敏感。

1
雷迪斯vs Zookeeper
考虑到这两个服务器的用途完全不同,将它们进行比较似乎很愚蠢。但是,如果您考虑一下,他们可以做很多类似的事情:存储配置数据,分布式锁定,排队等。 我有一个Redis实例,该实例用于一些与生产相关的事情,但是想在服务器之间进行一些简单的同步(大多数配置更改不需要推升代码,也不需要在服务器之间进行简单锁定)。什么是动物园管理员给我的Redis不会?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.