Redis如何在Trello中使用?

Wil*_*iam 10 redis

我理解,粗略地说,Trello使用Redis作为瞬态数据存储.

有人能够进一步阐述它在应用程序中扮演的角色吗?

Bre*_*ett 26

我们在Trello上使用Redis来获取短暂的数据,我们可以输掉它们.我们不会将Redis中的数据保存到磁盘,我们使用allkeys-lru,因此我们只存储可以随时启动的内容,只会给用户带来非常小的不便(例如,暂时看到不正确的用户状态).话虽如此,我们给它的存储空间超过了存储其实际工作集所需的空间的5倍,并选择10个键到期,所以我们真的从来没有看到任何被我们正在使用的东西.

  1. 这是我们的pubsub服务器.当用户对板或卡执行某些操作时,我们希望将具有该增量的消息发送到订阅了更改的对象的所有websocket连接的客户端,因此我们的所有Node进程都订阅了一个传播的pubsub通道这些消息,并将它传播到适当的许可和订阅的websockets.

  2. 我们排序使用它来支持socket.io,但由于我们只使用websockets,并且因为socket.io 太繁琐而不像我们现在需要的那样扩展,我们有一个补丁禁用除了一个通道之外的所有对我们来说是必要的.

  3. 对于没有websockets的用户,我们必须保留自用户上次轮询请求以来每个对象通道上发生的操作的列表.为此我们使用一个列表,我们在最近的100个元素上限,以及一个辅助计数器,表示自创建以来已将多少元素添加到列表中.因此,当我们回答来自此类浏览器的轮询请求时,我们可以检查它所报告的最后一个元素,并且只发送自那时以来已添加到队列中的所有消息.因此,在大多数情况下,获取轮询请求只需要权限检查和单个Redis密钥检查,这非常快.

  4. 我们存储了一些关于Redis中连接用户的活动状态的临时数据,因为这些数据经常更改,并且不必将其持久保存到磁盘.

  5. 我们存储短期密钥以支持Redis中的OAuth登录.

我们爱Redis; 一旦你有一个实例启动并运行,你想用它来做各种事情.我们遇到的唯一真正麻烦是消耗缓慢的客户占用了可用空间.

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