【问题标题】:redis cache layer for mongodb queries for performance boost up用于 mongodb 查询的 redis 缓存层以提高性能
【发布时间】:2015-06-21 15:24:22
【问题描述】:

我有一个电子商务网站。我的产品目录在 mongodb 中,所有其他事务在 mysql 中。 我打算使用 express 中间件,它将使用 redis 作为所有传出 mongodb 查询的缓存层。

谁能帮助我设计架构? 我将非常感激。 当前技术栈nodejs+mongodb+mysql

【问题讨论】:

    标签: node.js mongodb redis


    【解决方案1】:

    一般来说redis会非常适合缓存数据。与其为每个请求都访问主数据库,不如使用缓存技术,这再次取决于您更新缓存数据的频率。如果您错过频繁更新缓存或每当主数据库中发生更改时,就会出现严重问题。您必须监听数据库更改并更新缓存,截至目前 5 月 mongodb 中没有监听器,因此您可以编写一些 cron 作业来根据某个时间更新缓存。我们需要有关架构和架构的更多详细信息以提供进一步帮助。

    建议:

    第 1 步:每当您在 mongodb 或任何主数据库中插入或更新数据时,添加到缓存 redis 数据库。

    第 2 步:因此 99% 的数据将在特定产品的缓存 redis 数据库中可用。

    第3步:每当基于产品或任何其他细节进行api调用时,它会在cache redis数据库中检查它,如果该特定数据存在则返回该数据,否则同时从主数据库中获取它时间add to cache 也是如此,所以下次你将从缓存中获取数据。

    希望这次编辑能提供更多想法。

    【讨论】:

    • 感谢 karthick。通常,我计划此架构仅用于获取产品目录部分。比如获取类别、子类别、产品详细信息。所以我想缓存产品详细信息,直到它没有改变。我打算创建一个快速中间件,它将与 redis 和 mongodb 进行通信。因此,每当我调用 api /products/:productId 时,它都会检查该产品是否已缓存,如果产品缓存的 api 将响应缓存数据。
    • 检查编辑,请添加 cmets ,准备进一步帮助
    • 好的,谢谢。将尝试这样做。您还可以在 mongodb 中告诉我如何将 json 数据推送到集合中的现有字段。就像我有 customer-order 集合,它的结构像这样 [plnkr.co/edit/MthQbDghMVs2wlhYb3gT?p=catalogue]
    • 您必须像这样更改架构 { customerId: 1000, name:'jekjekjw', email: 'kjdkwd', phone: 88880808, orders: [{ ordercode: 'ANCHJH123', amount: 13,000 , products: [productId1, productId2, productId3] }, { ordercode: 'JUYHJH123', amount: 1,000, products: [productId4, productId5, productId8] }] }
    • 订单使用数组,推送数据很容易。检查link
    猜你喜欢
    • 2011-07-02
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多