我们在Trello上使用Redis
来存储临时数据,这样就不会丢失。我们不会将Redis中的数据持久化到磁盘上,而是使用allkeys-
lru,因此我们只存储可以随时踢出的内容,给用户带来的不便很小(例如,暂时看到错误的用户状态)。话虽这么说,我们为它提供了存储实际工作集所需空间的5倍以上,并从10个密钥中进行选择以期满,因此我们真的从来没有看到我们正在使用的任何东西被踢出。
这是我们的pubsub服务器。当用户对板或卡进行 *** 作时,我们希望向订阅了已更改对象的所有与Websocket连接的客户端发送带有该增量的消息,因此我们所有的Node进程都订阅了一个pubsub通道,该通道传播这些消息,然后将其传播到适当的许可和订阅的Websocket。
我们排序使用它来支持socket.io,但是由于我们仅使用websockets,并且因为socket.io 太闲谈而无法像我们目前所需要的那样进行扩展,所以我们有一个补丁可以禁用除一个通道之外的所有通道。对我们来说是必要的。
对于没有WebSocket的用户,我们必须保留自用户上次轮询请求以来在每个对象通道上发生的 *** 作的列表。为此,我们使用一个列表,该列表限制最近的100个元素,并使用辅助计数器来计算自列表创建以来已经添加了多少个元素。因此,当我们从这样的浏览器回答轮询请求时,我们可以检查它报告它已经看到的最后一个元素,并且仅向下发送此后添加到队列中的所有消息。因此,在大多数情况下,轮询请求可以简化为权限检查和单个Redis密钥检查,这非常快。
我们在Redis中存储一些有关已连接用户的活动状态的临时数据,因为这些数据经常更改,因此无需将其持久保存到磁盘。
我们存储短期密钥以支持Redis中的OAuth登录。
我们爱Redis;一旦启动并运行了它的实例,便想将其用于各种用途。我们遇到的唯一真正的麻烦是慢速客户占用了可用空间。
我们将MongoDB用于更传统的数据库需求。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)