C# 如何在Azure角色中缓存数据库读取?
在我的Azure角色中,我有许多实体必须存储在SQLAzure数据库中。目前,每当我需要读取一个实体时,我只运行一个SQLAzure查询 我怀疑它很快就会成为一个瓶颈,所以我必须实现某种缓存——某种内存结构,在第一次访问时读取数据,然后将其存储一段时间,并在后续读取时返回缓存数据。制作这样的结构应该不难,我相信我可以找到现成的代码 问题是如何处理来自多个实例的写入?例如,实例1读取并缓存数据,实例2更改数据库。除非实例1知道它必须重新读取数据库并实际重新读取数据库,否则它将使用错误的数据。我不知道如何轻松地做到这一点C# 如何在Azure角色中缓存数据库读取?,c#,.net,sql-server,caching,azure,C#,.net,Sql Server,Caching,Azure,在我的Azure角色中,我有许多实体必须存储在SQLAzure数据库中。目前,每当我需要读取一个实体时,我只运行一个SQLAzure查询 我怀疑它很快就会成为一个瓶颈,所以我必须实现某种缓存——某种内存结构,在第一次访问时读取数据,然后将其存储一段时间,并在后续读取时返回缓存数据。制作这样的结构应该不难,我相信我可以找到现成的代码 问题是如何处理来自多个实例的写入?例如,实例1读取并缓存数据,实例2更改数据库。除非实例1知道它必须重新读取数据库并实际重新读取数据库,否则它将使用错误的数据。我不知
有没有一种简单的方法可以使不同实例的缓存保持一致?这就是分布式缓存发挥作用的地方,在Azure上这通常意味着 分布式缓存背后的思想是,缓存是集中的,并且可能分布在多个服务器上(为了提高效率),这样,数据请求就不必进入数据库,而数据库的性能通常比较昂贵,但同样地,数据也不必在每个进程中本地缓存 虽然分布式缓存显然不如进程缓存那样高效,但它有几个好处-
缓存的信息这是分布式缓存发挥作用的地方,在Azure上这通常意味着 分布式缓存背后的思想是,缓存是集中的,并且可能分布在多个服务器上(为了提高效率),这样,数据请求就不必进入数据库,而数据库的性能通常比较昂贵,但同样地,数据也不必在每个进程中本地缓存 虽然分布式缓存显然不如进程缓存那样高效,但它有几个好处-
缓存中的信息您可以像Yossi所说的那样使用AppFabric缓存,但也可以使用。您可以像Yossi所说的那样使用AppFabric缓存,但也可以使用。如果您要使用Azure AppFabric缓存,并且希望数据保持一致,您可能需要关闭本地缓存 缺点是,如果每个请求都要从缓存中提取多个项目,这将成为一个主要瓶颈。您可以尝试通过将缓存对象组合成一个大对象来解决这个问题 我在微软论坛上谈到了这一点,现在的答案是,如果需要本地缓存,过时的数据只是一种生活方式
另一方面,如果需要本地缓存,并且您使用的是web角色,那么简单的旧ASP.Net缓存可能是更好的选择,并且不需要单独付费。如果您要使用Azure AppFabric缓存,并且希望数据保持一致,则可能需要关闭本地缓存 缺点是,如果每个请求都要从缓存中提取多个项目,这将成为一个主要瓶颈。您可以尝试通过将缓存对象组合成一个大对象来解决这个问题 我在微软论坛上谈到了这一点,现在的答案是,如果需要本地缓存,过时的数据只是一种生活方式 另一方面,如果需要本地缓存,并且您使用的是web角色,那么普通的ASP.Net缓存可能是更好的选择,并且不需要单独付费