【发布时间】:2017-02-27 10:48:58
【问题描述】:
我们目前使用 Redis 作为我们 Web 应用程序的持久缓存,但由于内存和成本有限,我开始考虑表存储是否是一个可行的选择。
我们存储的数据是相当基本的 json 数据,具有明确的 2 部分键,我们将用于表存储中的分区和行键,所以我希望这意味着快速查询。
我很欣赏一个在内存中,一个在内存中,所以表存储会慢一些,但随着我们的扩展,我相信只有一个 CPU 提供来自 Redis 缓存的数据,而使用表存储我们不会遇到这个问题,因为这将取决于我们运行的 Web 服务器的数量。
有没有人有任何以这种方式使用表存储的经验或两者之间的比较。
我应该补充一点,我们以一种非常简单的方式使用 Redis 获取/设置,仅此而已,我们驱逐自己的数据,如果空间不足,则将驱逐留给 Redis。
【问题讨论】:
-
我知道已经有一段时间了 - 你在这里做了什么?我正在考虑同样的举动。 Redis 的成本(连接和存储)使表存储成为一个非常合理的选择(存储帐户、表和分区允许轻松解决任何限制)
-
我们使用存储表进行缓存,响应时间通常为个位数毫秒,因此足以满足我们的需求。唯一需要注意的是对存储进行了太多调用,因为它在自动到期、订阅更改等方面没有缓存的正常基础。你需要自己在代码中实现很多。您需要仔细考虑如何对数据进行分组、过期和陈旧,否则会导致过多的存储请求。
-
但最终,即使过期,它也是对服务的调用。我的代码仍然为缓存对象调用 Redis,然后 Redis 说“不,已过期”,此时我调用底层服务,然后重新填充 Redis。所以我看不出这是如何最小化的。真正的缺点是自动过期,因此您可能使用了无效的存储空间,需要进行一些维护。还有发布/订阅场景——我没有 ATM。 (以及非常繁忙的站点的请求限制)。同样,这是 Redis 的一个问题,需要 $$$ 才能升级到更大的服务,所以我在那里看到了类似的问题。
-
是的,对不起,我的意思是 Redis 原生的任何东西,比如自动过期和 pub/sub 等。关于分组我只是提到它,这样你就可以避免我们在缓存项目方面犯的最初错误粒度导致缓存请求比我们需要的多。我们当时是缓存新手,所以事后看来,对于那些在职业生涯中至少做过一次网站缓存的人来说,它们是明显的设计考虑 :-)
标签: azure caching azure-table-storage azure-redis-cache