缓存¶
ABP 框架扩展了 ASP.NET Core 的分布式缓存系统. ABP vNext Pro 已集成 Redis 做为缓存。
配置¶
AbpDistributedCacheOptions¶
示例:为应用程序设置缓存键前缀
| AbpProHttpApiHostModule.cs | |
|---|---|
可用选项¶
HideErrors(bool, 默认:true): 启用/禁用隐藏从缓存服务器写入/读取值时的错误.KeyPrefix(string, 默认:null): 如果你的缓存服务器由多个应用程序共同使用, 则可以为应用程序的缓存键设置一个前缀. 在这种情况下, 不同的应用程序不能覆盖彼此的缓存内容.GlobalCacheEntryOptions(DistributedCacheEntryOptions): 用于设置保存缓内容却没有指定选项时, 默认的分布式缓存选项 (例如AbsoluteExpiration和SlidingExpiration).SlidingExpiration的默认值设置为 20 分钟.
使用方式¶
示例: 在缓存中存储图书名称和价格
| C# | |
|---|---|
你可以注入 IDistributedCache<BookCacheItem> 服务用于 get/set BookCacheItem 对象.
- 示例服务代码中的
GetOrAddAsync()方法从缓存中获取图书项.GetOrAddAsync是 ABP 框架在 ASP.NET Core 分布式缓存方法中添增的附加方法. - 如果没有在缓存中找到图书,它会调用工厂方法 (本示例中是
GetBookFromDatabaseAsync)从原始数据源中获取图书项. GetOrAddAsync有一个可选参数DistributedCacheEntryOptions, 可用于设置缓存的生命周期.
批量操作¶
ABP 的分布式缓存接口定义了以下批量操作方法,当你需要在一个方法中调用多次缓存操作时,这些方法可以提高性能
SetManyAsync和SetMany方法可以用来向缓存中设置多个值.GetManyAsync和GetMany方法可以用来从缓存中获取多个值.GetOrAddManyAsync和GetOrAddMany方法可以用来从缓存中获取并添加缺少的值.RefreshManyAsync和RefreshMany方法可以来用重置多个值的滚动过期时间.RemoveManyAsync和RemoveMany方法可以用来从缓存中删除多个值.
这些不是标准的 ASP.NET Core 缓存方法, 所以某些提供程序可能不支持. [ABP Redis 集成包]实现了它们. 如果提供程序不支持,会回退到
SetAsync和GetAsync... 方法(循环调用).