MasaFramework -- 缓存入门与规则配置( 五 )

  • GetOrSet<T>GetOrSetAsync<T>: 如果在缓存中找到,则返回类型为T的结果,如果缓存未找到,则执行Setter,并返回Setter的结果
  • Set<T>SetAsync<T>: 将指定的缓存Key以及缓存值添加到缓存
  • SetList<T>SetListAsync<T>: 将指定的缓存Key、Value集合添加缓存
  • Remove<T>RemoveAsync<T>: 将指定的缓存Key (缓存Key集合) 从缓存中移除
  • Refresh<T>RefreshAsync<T>: 刷新指定的缓存Key (缓存Key集合) 的生命周期
    • 适用于未被删除、绝对过期时间没有到,但相对过期时间快到的缓存 (延长滑动过期时间)
  • IDistributedCacheClientFactory (分布式缓存工厂)
    • Create: 返回指定Name的分布式缓存客户端
    IMultilevelCacheClientFactory (多级缓存工厂)
    • Create: 返回指定Name的多级缓存客户端
    如果Name为空字符串时,可直接使用IDistributedCacheClientIMultilevelCacheClient, 默认注册不指定Name时,则其Name为空字符串,可不通过Factory创建
    总结Masa Framework提供了分布式缓存以及多级缓存的实现,其中有几个优秀的功能:
    • 多级缓存提供了缓存更新后同步更新内存缓存功能
      • 当我们的服务是多副本时,不必担心会缓存更新后其它副本由于内存缓存未过期,导致获取到过期的缓存数据,大大提升我们的用户体验
    • 支持滑动过期以及绝对过期混合使用
      • 避免无用的缓存长时间被持久化,但对于热点数据又可以避免打到Redis或者数据库
    • 配置支持热更新,配置更新后同步生效,无需重启项目
    • 缓存Key支持格式化,可根据当前缓存值类型与传入缓存Key结合形成新的缓存Key,提高了开发效率以及代码可读性
      • 比如获取用户id为1的数据,可通过Client.Get<User>("1"),而无需:Client.Get<User>("User.1")
    本章源码Assignment16
    https://github.com/zhenlei520/MasaFramework.Practice
    开源地址MASA.Framework:https://github.com/masastack/MASA.Framework
    MASA.EShop:https://github.com/masalabs/MASA.EShop
    MASA.Blazor:https://github.com/BlazorComponent/MASA.Blazor
    如果你对我们的 MASA Framework 感兴趣,无论是代码贡献、使用、提 Issue,欢迎联系我们
    MasaFramework -- 缓存入门与规则配置

    文章插图

    经验总结扩展阅读