Azure Redis 缓存作为数据存储
我正在开发一个 PaaS。该应用程序将托管在 Azure 网站中。目前我使用 EF/SQL 作为具有内存缓存的数据存储。如果应用程序增长并且我需要在多个实例之间共享此缓存,我计划使用 Azure Reddis 缓存。
随着我对 Reddis 的了解越来越多,我开始喜欢我所看到的。对于我的许多领域对象来说,它确实非常快速且完美。以我的日志记录模型为例。所以现在我想知道,我可以使用 Azure Reddis 缓存作为主要数据存储吗?
名称中的缓存一词让我感到担忧。不使用时数据会被清除吗?
<小时 />应用
该应用程序是 MVC5 应用程序。它包括一个 HtmlController 管理部分,但工作的重点是在 ApiController 中。 ApiController 将主要服务于 OData Get,但我也将提供 PUT 请求。我按请求计费,因此必须记录所有用户操作(对于 reddis 来说这是一个完美的工作)。
我的模型有三个对象,但没有关系。不经常用于身份验证的用户。 90% 的日志记录采用“即发即忘”方式,而存储则按“应用程序 key ”和“组 key ”进行分区。将请求存储“集”,并且将在内存中手动应用 Odata 动词。
<小时 />Azure Tables 会是更好的解决方案吗?
请您参考如下方法:
您可以使用 Redis 作为主数据存储,但在 Redis 接收数据和尝试将其写入 AOF 文件之间始终存在数据丢失的小风险。如果在该窗口期间实例死亡,您将丢失该部分数据。
话虽如此,没有明确指示 Azure Redis 缓存是否进行后台保存(简单来说,就是写入磁盘)。如果不这样做,那么所有内容都会保留在服务器的内存中,这意味着如果您丢失所有服务器,您就会丢失所有数据。失去所有服务器是一种非常不同的情况,但仍然有可能。
在获得进一步信息之前,我会假设数据可能会从缓存中丢失( volatile ),并且使用另一种类型的数据存储(例如,现在使用的 SQL)来确保安全。
更新:Redis 缓存没有启用持久性,因此最初的假设是正确的。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。