【问题标题】:Persisting data from Redis to MongoDB for datastore将数据从 Redis 持久化到 MongoDB 用于数据存储
【发布时间】:2012-04-15 02:57:23
【问题描述】:

我有一个使用频繁更新列表的应用程序。例如,每个单击按钮的人都会被添加到与该按钮关联的唯一列表中。然后我们要按按钮、降序和有限制地显示这些列表。

我们一直在使用 MySQL 和 Memcache 来做这件事。问题是这效果不好。

我打算做的是使用 Redis 列表。每个按钮在redis中都会持有一个唯一的key,每个用户都将使用LPUSH添加到key中如果我们想获取最新的10个,我们可以使用LRANGE 0 10

现在,这些按钮最终将“过期”并且不再被主动添加或点击,但是,我们需要历史数据。我们的想法是一旦这些过期,我们将从 Redis 获取数据并将其填充到 MongoDB。对历史数据的任何查询都将针对 MongoDB。

有人会反对这种解决方案吗?这样做是否“有意义”?

谢谢!

【问题讨论】:

    标签: caching mongodb redis


    【解决方案1】:

    这个解决方案很有意义,我在我的应用中做了类似的事情。

    有一点需要注意:

    例如,每个单击按钮的人都会被添加到与该按钮关联的唯一列表中。

    您是否允许该列表中有重复的用户?如果是,请使用列表。如果没有,您可能希望将它与 set 结合(用于唯一检查),但这会花费您一些 RAM。

    【讨论】:

    • 您可能想进一步向 OP 解释的关键点是如何在项目过期时将项目从 Redis 转移到 MongoDB。 Redis 中的 item 过期时,无法直接得到通知。
    • @DidierSpezia:请注意问题中如何引用“过期”。这暗示(对我而言)是应用程序决定项目何时过期。此时它也可以将数据传输到 mongo。
    • 非常感谢!是的,过期将由应用程序处理,一旦按钮过期,应用程序将知道这一点并将数据从redis复制到mongo,然后从redis中删除。列表也可以有重复的用户,所以列表应该是好的。
    猜你喜欢
    • 2011-01-27
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多