gpt4 book ai didi

c# - 如何在Azure角色中缓存数据库读取?

转载 作者:太空宇宙 更新时间:2023-11-03 19:26:18 26 4
gpt4 key购买 nike

在我的 Azure 角色中,我有很多实体必须存储在 SQL Azure 数据库中。目前,每当我需要读取实体时,我只需运行 SQL Azure 查询。

我怀疑它很快就会成为瓶颈,所以我必须实现某种缓存 - 某种内存结构,在第一次访问时读取数据,然后将其存储一段时间,并在后续读取时返回缓存的数据。制作这样的结构应该不难,我确信我可以找到现成的代码。

问题是我该如何处理来自多个实例的写入?例如,实例1读取数据并缓存,实例2更改数据库。除非实例 1 知道它必须重新读取数据库并且实际上重新读取数据库,否则它会处理错误的数据。我不知道如何轻松做到这一点。

是否有一种简单的方法可以保持不同实例的缓存一致?

最佳答案

这就是分布式缓存发挥作用的地方,在 Azure 上这通常意味着 Windows Azure AppFabric Caching

分布式缓存背后的想法是缓存是集中式的,并且可能分布在多个服务器上(为了提高效率),这样数据请求就不必发送到数据库,而数据库通常在性能方面相对昂贵,但同样,数据不必在每个进程中本地缓存。

虽然显然不如进程内缓存高效,但分布式缓存有几个好处 -

  1. 它确实可以防止多次调用底层源
  2. 由于缓存不在进程内(实际上是在不同的服务器上),因此减少了本地内存的压力
  3. 客户端从彼此的提取中受益 - 即,如果一个客户端将数据放入缓存,且安全设置允许,其他客户端现在可以访问此信息,从而可以提高缓存的利用率

这也意味着拥有更新的“真相”知识的客户端可以更新缓存或实际上使其无效,这将立即使共享相同缓存的所有其他客户端受益。

此外 - 作为分布式模型 - 缓存场可以扩展以满足许多请求,尽管在 Azure 上 - 由于缓存是作为服务提供的,这是平台而不是所有者负责的事情,这是PaaS 和 Windows Azure 的一大优势 信息到缓存

关于c# - 如何在Azure角色中缓存数据库读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8384357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com