2011-12-20 96 views

回答

24

我们使用Redis的上Trello的临时数据,我们会好起来的与失去。我们不会将Redis中的数据保存到磁盘中,因此我们只使用它allkeys-lru,因此我们只能存储可随时被踢出的内容,而且对用户造成极小的不便(例如暂时看到不正确的用户状态)。这就是说,我们给它5倍以上的空间来存储它的实际工作集,并从10个按键中选择过期时间,所以我们真的从来没有看到我们正在使用的任何东西被踢出去。

  1. 这是我们的pubsub服务器。当用户对板或卡做某些事情时,我们希望发送一个带有增量的消息给订阅了更改对象的所有WebSocket连接的客户端,这样我们所有的Node进程都订阅了一个传播的pubsub频道这些消息,并将其传播给适当的许可和订阅的websockets。

  2. 我们使用它来支持socket.io,但由于我们只使用websockets,并且因为socket.io是too chatty需要缩放,就像我们目前需要的那样,我们有一个补丁可以禁用所有的这是我们必需的一个渠道。

  3. 对于我们没有的WebSockets谁的用户,我们必须保持已经发生,因为用户的最后一次民意调查要求每个对象通道在操作的列表。为此,我们使用一个列表,我们在最近的100个元素上加上一个列表,以及一个辅助计数器,它列出了自创建以来已添加到列表中的元素数量。所以,当我们回答来自这样一个浏览器的轮询请求时,我们可以检查它所报告的最后一个元素,并且只发送自此之后添加到队列中的任何消息。因此,在大多数情况下,轮询请求只需进行权限检查和单个Redis密钥检查,速度非常快。

  4. 我们存储有关Redis的连接用户的活动状态的一些短暂的数据,因为该数据经常变化,而且没有必要把它坚持到磁盘。

  5. 我们店里的短暂密钥支持的OAuth登录在Redis的。

我们爱Redis;一旦你有了它的一个实例并运行,你想用它来处理各种事情。我们遇到的唯一困难是slow-consuming clients eating up the available space

我们使用MongoDB来满足更传统的数据库需求。

+0

非常感谢Brett。哦,并祝贺构建这样一个真棒应用:) – William 2012-01-06 15:59:32

+0

https://trello.com/brett – 2012-01-13 16:36:22

+0

@Brett,你使用redis进行用户会话数据和权限检查吗?谢谢! – paulkon 2014-03-18 15:09:07