我有一个场景,我想知道我是否正确使用Azure Redis Cache,因为我绝对不会看到任何性能。
网络应用程序允许客户创建,阅读和更新记录,并假设这些是客户记录。 Azure中有一个SQL数据库,并且有近60,000个客户记录,我们假设有一个表,其中包含客户详细信息,名称,电子邮件,地址等。
你们将如何构建这个Web应用程序以提高性能,因为直接查询数据库更快,而不是将所有记录放入缓存。我目前使用缓存做了什么:
List<T>
并查询,匹配,搜索等,然后返回结果。List<T>
并将其存储到缓存中。我使用缓存的性能优势为零。我用错了吗?
我认为序列化大量数据并将其存储到缓存是一个坏主意。任何想法如何让它更好?
答案 0 :(得分:1)
虽然我没有对Redis中的键进行基准搜索,但您可以期待O(N)搜索时间,因为Redis必须检查每个键以查看它是否满足查询。具有覆盖您的查询的索引的数据库将能够在少于O(N)的时间内进行搜索,因为它不必查看每条记录。我认为对于大型数据集,数据库可以更好地执行搜索,因为它不必查看每条记录。
现在是使用Redis提升性能的最佳方法。
当您拥有要检索的值的键时,Redis会发光。在这种情况下,它是疯狂的,并且会在单个值查找中破坏SQL DB的性能。如果您正在使用读取大量数据,您将看到整体上最大的收益。例如,如果您的应用程序具有每个用户必须在每个请求上检查的用户首选项记录,那么这将是Redis中缓存的一个很好的候选者。您还可以从数据库中卸载流量并将其发送到Redis。
查看Cache Aside Pattern以获得更深入的解释。
与Redis合作的另一个问题是:确保您重复使用ConnectionMultiplexor,而不是不断尝试重新连接到每个请求的Redis缓存实例。这很慢,每个缓存实际上有一个最大连接限制。