项目

KB#0002:何时使用分布式缓存服务器

ABP提供了基于ASP.NET Core分布式缓存分布式缓存服务。本文档将说明何时需要为应用程序配置独立的缓存服务器。

理解默认缓存服务

缓存服务的默认实现基于内存存储。内存缓存仅适用于构建单体应用且仅运行单个应用实例的场景。其他情况下,应当使用真正的分布式缓存服务器

以下为需要采用分布式缓存服务器的典型场景:

  • 开发单体应用,但需要同时运行多个实例(例如在集群环境中)
  • 构建微服务或任何类型的分布式系统
  • 解决方案中包含多个Web应用且需要共享缓存数据

问题显而易见:如果每个应用实例使用内部内存缓存,当两个或多个应用缓存相同数据时,很可能存储的是数据的不同副本。这种情况下,数据发生变更时无法在所有应用内存中同步失效/刷新缓存。

什么是分布式缓存服务器

分布式缓存服务器(例如Redis)将缓存对象存储在独立的服务器应用中,允许多个应用/进程共享相同的缓存对象。这种方式具有以下优势:

  • 所有应用服务及其实例使用同一缓存存储,共享相同的缓存对象。当某个应用实例刷新缓存对象后,其他所有实例将立即使用新对象
  • 即使应用停止后重启,缓存对象也不会丢失,因为它们由独立的缓存服务器管理

如何使用分布式缓存服务器

ABP解决方案模板在必要时会预配置Redis,例如:

  • 微服务启动模板始终预配置Redis,并包含对应的Docker容器
  • 应用启动模板在您选择多应用、分层架构或其他需要分布式缓存的配置时,会自动配置Redis

为保持依赖最小化,其他情况将采用默认(内存)缓存配置。若需使用分布式缓存服务器,您需要手动为应用切换至分布式缓存提供程序。

如需使用Redis作为分布式缓存服务器,请参阅《Redis缓存》文档。若要切换至其他缓存提供程序,请参考ASP.NET Core官方文档

在本地环境安装Redis服务器

若要在开发环境中使用Redis作为分布式缓存提供程序,可直接使用官方Redis Docker镜像。本地安装Docker后,可通过以下命令运行Redis容器并映射默认端口:

docker run -p 6379:6379 --name RedisServer -d redis

更多配置选项请参阅官方Redis Docker镜像文档。

相关参考

在本文档中