3

我正在开发 PaaS。该应用程序将托管在 Azure 网站中。目前我正在使用 EF / SQL 作为内存缓存的数据存储。如果应用程序增长并且我需要在多个实例之间共享此缓存,我计划使用 Azure Reddis 缓存。

当我更多地研究reddis时,我开始喜欢我所看到的。对于我的许多域对象来说,它真的非常快速和完美。例如我的日志模型。所以现在我想知道,我可以使用 Azure Reddis 缓存作为主数据存储吗?

名字中的缓存这个词让我很担心。不使用时是否清除数据?

虽然我在做,但我想我应该更详细地描述我的应用程序。该应用程序是 MVC5 应用程序。它包括一个 HtmlController 管理部分,但工作的核心是在 ApiController 中。ApiController 将主要服务于 OData Get,但我也会分享我的 PUT 请求。我按请求计费,因此必须记录所有用户操作(reddis 的完美工作)。

编辑

我的模型有三个对象,没有关系。不经常用于身份验证的用户。90% 的日志记录是“一劳永逸”,而存储是由“应用密钥”和“组密钥”分区的。将请求存储“集”,并且将在内存中手动应用 Odata 动词。

编辑

经过更多阅读,我想知道 Azure Tables 会是一个更好的解决方案。这个博客很有影响力。假设同时替换缓存和 sql。

编辑:通过电子邮件发送 Azure

所以我给 Azure 发了电子邮件....

你好尼古拉斯,

您的问题似乎需要技术支持,而不是选择的计费和订阅支持。

目前,您没有 Windows Azure 技术支持订阅。

请注意,Windows Azure 有许多选项可供您选择以获得技术支持。您是否尝试过在我们的社区论坛中搜索或发布您的问题?Windows Azure 生态系统为经常出现的大量技术问题提供了答案。此外,如果您访问 WindowsAzure.com/support,您会看到我们有多种付费支持选项,您可以选择最能满足您的技术支持需求的一种。

真的吗 ?这不是您进行售前查询的方式。

4

2 回答 2

4

您可以将 Redis 用作主要数据存储,但在 Redis 接收数据和尝试将其写入 AOF 文件之间,始终存在很小的数据丢失风险。如果在该窗口期间,实例死亡,您将丢失该部分数据。

话虽如此,Azure Redis Cache 是否进行后台保存并没有明确的指示(简单来说,就是写入磁盘)。如果他们不这样做,那么所有内容都保留在服务器上的内存中,这意味着如果您丢失所有服务器,那么您将丢失所有数据。丢失所有服务器是一种非常不同的情况,但仍有可能。

在有更多信息之前,我会假设数据可能会从缓存中丢失(易失性)并具有另一种类型的数据存储(例如,您现在所做的 SQL)以确保安全。

更新:Redis Cache 没有启用持久性,所以最初的假设是正确的。

于 2014-08-08T10:14:26.423 回答
1

这是一篇关于使用 MongoDB 作为主要资源而不是关系数据库的缺点的有趣帖子。

我认为大多数结论也发生在您的场景中。

最重要的问题 - 如果您需要或将来需要找到数据之间的联系和关系、计算指标并从数据中提取业务价值,那么使用 Redis 等解决方案可能会导致问题,因为它们旨在存储和检索 SINGLE 值,没有关系到其他数据。

于 2014-08-08T15:36:02.107 回答