【问题标题】:How to implement node-lru-cache?如何实现 node-lru-cache?
【发布时间】:2020-01-24 05:49:48
【问题描述】:

我使用 Node.jsSocket.iomongodb 开发了一个实时应用程序。它有一定的要求,当用户加载特定页面时,从 mongodb 获取大约 20000 个 x 和 y 坐标在 2 个特定日期之间的点,并在地图上呈现给客户端。现在,如果用户再次重新加载,则重复该过程。我很困惑如何使用什么键将这些点插入缓存中,以便当用户重新加载时,可以使用键轻松获取缓存中的值。 有什么建议么?谢谢!

【问题讨论】:

    标签: node.js mongodb caching


    【解决方案1】:

    你可以

    1. 完全编写自己的缓存层

    2. 在此处使用现有的缓存库(例如 lru-cache-模块 by isaacs, 这可能是该领域最受欢迎的)

    3. 可以使用redis 作为缓存(有 为插入的文档设置 TTL 的能力)已经有一个 mongoose-redis-cache-模块, 也许这有帮助

    可能还有其他 x 个解决方案。这取决于您的数据规模/请求数量等。

    【讨论】:

      【解决方案2】:

      在这种情况下,缓存是您的数据库为您做的事情。 MongoDB 依赖操作系统的内存映射 I/O 进行存储。通用操作系统通常会将最常用的页面保存在内存中。如果您仍想使用额外的缓存,用于坐标的明显键是Geohash

      【讨论】:

        【解决方案3】:

        这个库runtime-memcache 实现了lru 和其他一些javascript 缓存方案。使用 Node.js 并用 Typescript 编写。

        它使用修改后的双向链表来实现 getsetremove 的 O(1)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多