redis - Redis 在 Trello 中是如何使用的?

标签 redis

我的理解是,粗略地说,Trello 使用 Redis 作为临时数据存储。

是否有人能够进一步详细说明它在应用程序中所扮演的角色?

最佳答案

我们在 Trello 上使用 Redis对于我们可以接受丢失的短暂数据。我们不把Redis中的数据持久化到磁盘,我们使用它allkeys-lru ,所以我们只存储可以随时被踢出的东西,只会给用户带来非常小的不便(例如,暂时看到不正确的用户状态)。话虽如此,我们为它提供了超过 5 倍的空间来存储其实际工作集,并从 10 个过期 key 中进行选择,因此我们真的从未见过我们正在使用的任何东西被踢出。

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

  2. 我们有点用它来支持 socket.io,但由于我们只使用 websockets,而且 socket.io 是 too chatty为了像我们目前需要的那样进行扩展,我们有一个补丁可以禁用除我们需要的一个 channel 之外的所有 channel 。

  3. 对于没有 websockets 的用户,我们必须保留自用户上次轮询请求以来每个对象 channel 上发生的操作的列表。为此,我们使用一个列表,该列表的上限为最近的 100 个元素,以及一个辅助计数器,用于记录自列表创建以来已添加到列表中的元素数量。因此,当我们从这样的浏览器回答轮询请求时,我们可以检查它报告的最后一个元素它已经看到,并且只发送从那时起添加到队列中的任何消息。因此,在大多数情况下,轮询请求只需要一次权限检查和一次 Redis key 检查,速度非常快。

  4. 我们在 Redis 中存储了一些关于连接用户事件状态的临时数据,因为这些数据经常变化,没有必要将其持久保存到磁盘。

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

我们喜欢 Redis;一旦启动并运行了它的实例,您就想将它用于各种用途。我们遇到的唯一真正的麻烦是slow-consuming clients eating up the available space。 .

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

关于redis - Redis 在 Trello 中是如何使用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8579336/

相关文章:

redis - 使用 django-celery chord,celery.chord_unlock 一直在执行,不调用提供的回调

java - 使用绝地管道获取值(value)

Redis:多个唯一键与通过哈希分桶

redis - 使用以 Redis 为后端的 Spring Session 时,默认 session 超时是多少以及如何配置它?

node.js - 如何将聊天与 nodejs 和 xmpp 集成到我现有的 Web 应用程序中?

node.js - socketio 与 redis 和 haproxy 的服务器间通信

Redis 4 systemd Sentinel 配置文件不可写

redis - 如何重新连接Redis集群节点?

redis - 主从和发布订阅连接

phpfastcache V6 + redis - 可以设置前缀吗?