MasaFramework -- 缓存入门与设计( 四 )


  • RemoveRemoveAsync: 将指定的缓存Key (缓存Key集合) 从缓存中移除
  • RefreshRefreshAsync: 刷新指定的缓存Key (缓存Key集合) 的生命周期
    • 适用于未被删除、绝对过期时间没有到,但相对过期时间快到的缓存
  • ExistsExistsAsync: 如果在缓存中找到,则返回true,否则返回false
  • GetKeysGetKeysAsync: 根据key pattern 得到符合规则的所有缓存Key
    • 例: 传入User*,可得到缓存中以User开头的所有缓存Key
  • KeyExpireKeyExpireAsync: 设置缓存Key的生命周期
IMultilevelCacheClient (多级缓存客户端)
  • Get<T>GetAsync<T>: 根据缓存Key返回类型为T的结果 (如果缓存不存在,则返回Null) (支持监控缓存变更)
  • GetList<T>GetListAsync<T>: 根据缓存Key集合返回对应的缓存值的集合 (针对不存在的缓存key,其值返回Null)
  • 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 -- 缓存入门与设计

文章插图
【MasaFramework -- 缓存入门与设计】

推荐阅读