高效和一致地处理数据已成为现代最大的挑战之一。 不断迎合高交易数据的 Web 应用程序缺乏性能和可扩展性。 幸运的是,您可以引入缓存来处理这种情况,从而避免因频繁的网络传输而产生的巨大成本。
然而,在使用缓存时,应用程序必须处理两个数据源,这可能会使应用程序代码复杂化并导致进一步的性能滞后。 与缓存未命中的情况一样,必须通过网络访问数据库才能获取所需数据并将其填充到缓存中。 为了简化应用程序代码并减少网络传输中涉及的延迟, NCache 提供了一个名为 Read-Through 的自定义数据源提供程序。 此提供程序代表您的应用程序与数据库交互,以从数据源获取所需的数据,并在单个操作中填充缓存以供当前和将来使用。
什么是通读?
Read-Through 是一个自定义的数据源提供者,通过它你可以告诉缓存它需要如何以及何时从数据库中获取数据。 Read-Through 代表您的应用程序与您的数据源进行交互,并将避免它进行运行时数据库访问,从而提高应用程序的性能。
使用通读 NCache
在 Read-Through Caching 中,当缓存未命中时, NCache 将调用您的提供商以在 get 调用上加载数据。 在涉及多个服务器的集群缓存中,ReadThrough 提供程序将在所有缓存服务器节点上激活(初始化)。 但是,Read-Through 操作将根据所使用的拓扑结构执行。
随着 ReadThrough, NCache 还提供了选项 强制通读。 启用强制读取后,您的提供程序将忽略缓存中的数据,并强制从数据源获取数据。 因此,数据不会在缓存中检查,而是直接从数据源中获取。
NCache 提供多种方法来保持缓存的新鲜度和 数据过期 是其中之一。 但仅过期会导致性能滞后,这就是 通读 进来。例如,在一家电子商务商店中,缓存了数百种产品,其中一些被频繁访问 - 其余缓存的项目只会坐在那里吃掉缓存内存。
通过使用到期,您可以在指定时间或访问频率后使项目失效。 但是,有可能某项最终已过期,但应用程序请求了该项。 在这种情况下,应用程序必须从数据库中获取项目,然后将其添加到缓存中。 这种运行时数据库访问可能会导致某些延迟,从而损害应用程序的性能。
为避免这种性能滞后,Read-Through 与 重新同步选项 属性将在缓存中过期时自动获取配置有重新同步标志的每个项目。 这将始终保持缓存新鲜,减少缓存未命中,并避免运行时数据库访问。
同样,依赖项也是保持数据在缓存中一致的好方法。 特别是在用户希望保持数据与数据库同步的场景中,以便在数据库中相应数据的每次更新时,缓存都会收到通知并自动使相应数据失效。 这样缓存中的数据保持新鲜,所有操作都使用更新后的数据集。
通读的意义
以下情况尤其鼓励您使用 Read-Through 数据源提供程序:
简化的应用程序代码
Read-Through 使用“关注点分离”原则实现应用程序代码,以实现这种简化。 部署 Read-Through 后,所有与数据库的通信都通过数据访问层进行。 现在缓存负责提供所需的数据并将缓存与数据库同步。
改进的读取可扩展性
ResyncOptions 属性的此功能还通过始终保持缓存项可用和更新来提高读取可伸缩性。 可能有很多情况 缓存项过期 数据库面临来自用户线程的无数请求。
这种情况,加上数以百万计的缓存项和数以千计的并行用户请求,导致数据库负载明显增加。 幸运的是,Read-Through 和 ResyncOptions 在从数据库中获取缓存项的最新副本时将缓存项保留在缓存中,然后更新缓存项,从而避免应用程序为这些缓存项转到数据库,保持将数据库负载降到最低。
缓存中的高数据可用性和一致性
Read-Through 通过自动刷新缓存确保缓存中数据的高可用性和一致性。 NCache 使用 ResyncOptions 指定的 Read-Through 提供程序在对象过期或数据库中相应数据发生任何其他更改后立即重新加载对象。 这可以防止缓存数据过时。
使用通读优化性能的方法
Read-Through 不仅可以保持缓存的一致性,还可以通过让您获得 批量缓存项目,从而节省了昂贵的数据库调用和网络访问。
此外,Read-Through 可以作为缓存的绝佳替代方案。 在缓存之外,应用程序从数据源获取数据并更新缓存,这增加了应用程序的责任,使应用程序代码复杂化,并损害了应用程序的性能。
结论
NCache的 Read-Through 数据源提供程序可增强应用程序的性能并确保高数据可用性。 Read-Through 还通过消除与数据源通信的代码块来简化您的应用程序代码,并代表您的应用程序与数据库交互。 所以,如果你想要常青缓存数据,不要犹豫,获取 NCache的 60 天免费试用。