Azure Redis缓存 - 应用程序性能改进

问题描述 投票:1回答:1

我有一个场景,我想知道我是否正确使用Azure Redis缓存,因为我绝对不会看到任何性能。

Web应用程序允许客户创建,读取和更新记录,并假设这些是客户记录。 Azure中有一个SQL数据库,并且有近60,000个客户记录,我们假设我们的示例中有一个表,包含客户详细信息,名称,电子邮件,地址等。

您将如何构建此Web应用程序以提高性能,因为直接查询数据库更快,而不是将所有记录放入缓存。我目前使用缓存做了什么:

  • 对于包括过滤器(搜索,排序等)的每次读取,我从Redis缓存中获取数据,将其反序列化为List<T>和查询,适配器,搜索等,并返回结果。
  • 为了更新,我更新了sql db中的记录,从db获取所有记录作为List<T>并将其存储到缓存中。
  • 用于创建和删除与上面更新相同的内容。

我使用缓存的性能优势为零。我用错了吗?

我认为序列化大量数据并将其存储到缓存是一个坏主意。任何想法如何使它更好?

azure azure-caching azure-redis-cache
1个回答
1
投票

虽然我没有对Redis中的键进行基准搜索,但您可以期待O(N)搜索时间,因为Redis必须检查每个键以查看它是否满足查询。具有覆盖您的查询的索引的数据库将能够在少于O(N)的时间内进行搜索,因为它不必查看每条记录。我认为对于大型数据集,数据库可以更好地进行搜索,因为它不必查看每个记录。

现在,使用Redis提高性能的最佳方法。

当您拥有要检索的值的键时,Redis会发光。在这种情况下,它是疯狂的,并且会在单个值查找中破坏SQL DB的性能。如果您正在使用读取大量数据,您将看到整体上最大的收益。例如,如果您的应用程序具有每个用户必须在每个请求上检查的用户首选项记录,那么这将是Redis中缓存的一个很好的候选者。您还可以从数据库中卸载流量并将其发送到Redis。

查看Cache Aside Pattern以获得更深入的解释。

使用Redis的另一个问题是:确保您重用ConnectionMultiplexor,而不是不断尝试重新连接到每个请求的Redis缓存实例。这很慢,实际上每个缓存有一个最大连接限制。

© www.soinside.com 2019 - 2024. All rights reserved.