KB#0002:何时使用分布式缓存服务器
ABP提供了基于ASP.NET Core分布式缓存的分布式缓存服务。本文档将说明何时需要为应用程序配置独立的缓存服务器。
理解默认缓存服务
缓存服务的默认实现基于内存存储。内存缓存仅适用于构建单体应用且仅运行单个应用实例的场景。其他情况下,应当使用真正的分布式缓存服务器。
以下为需要采用分布式缓存服务器的典型场景:
- 开发单体应用,但需要同时运行多个实例(例如在集群环境中)
- 构建微服务或任何类型的分布式系统
- 解决方案中包含多个Web应用且需要共享缓存数据
问题显而易见:如果每个应用实例使用内部内存缓存,当两个或多个应用缓存相同数据时,很可能存储的是数据的不同副本。这种情况下,数据发生变更时无法在所有应用内存中同步失效/刷新缓存。
什么是分布式缓存服务器
分布式缓存服务器(例如Redis)将缓存对象存储在独立的服务器应用中,允许多个应用/进程共享相同的缓存对象。这种方式具有以下优势:
- 所有应用服务及其实例使用同一缓存存储,共享相同的缓存对象。当某个应用实例刷新缓存对象后,其他所有实例将立即使用新对象
- 即使应用停止后重启,缓存对象也不会丢失,因为它们由独立的缓存服务器管理
如何使用分布式缓存服务器
ABP解决方案模板在必要时会预配置Redis,例如:
为保持依赖最小化,其他情况将采用默认(内存)缓存配置。若需使用分布式缓存服务器,您需要手动为应用切换至分布式缓存提供程序。
如需使用Redis作为分布式缓存服务器,请参阅《Redis缓存》文档。若要切换至其他缓存提供程序,请参考ASP.NET Core官方文档。
在本地环境安装Redis服务器
若要在开发环境中使用Redis作为分布式缓存提供程序,可直接使用官方Redis Docker镜像。本地安装Docker后,可通过以下命令运行Redis容器并映射默认端口:
docker run -p 6379:6379 --name RedisServer -d redis
更多配置选项请参阅官方Redis Docker镜像文档。
抠丁客


