本地缓存 - 静态 LocalCache 类

优质
小牛编辑
138浏览
2023-12-01

[命名空间: Serenity] - [程序集: Serenity.Core]

一个包含快捷访问注册 ILocalCache 提供者的静态类。

  1. public static class LocalCache
  2. {
  3. public static void Add(string key, object value, TimeSpan expiration);
  4. public static TItem Get<TItem>(string key, TimeSpan expiration,
  5. Func<TItem> loader) where TItem : class;
  6. public static void Remove(string key);
  7. public static void RemoveAll();
  8. }

Add、Remove 和 RemoveAll 方法是对应 ILocalCache 接口的快捷访问方法,但 Get 方法不同于 ILocalCache.Get。

LocalCache.Get<TItem> 方法

获取本地缓存指定键的值。

如果缓存中没有该键,使用加载(loader)函数产生值,并使用指定的键添加到缓存。

LocalCache.Get Flow Diagram

  • 如果缓存中的值是 DBNull.Value,返回 null(例如,使用这种方式,如果数据库中不存在该 ID 的用户,则阻止在数据库中重复查询该 ID)。

  • 如果缓存中存在该值,但不是 TItem 类型,将抛出异常;否则返回该值。

  • 如果缓存中不存在该值,调用加载(loader)函数产生该值(如,从数据库加载)并……

    • 如果加载(loader)函数产生的值为 null,在缓存中存储为 DBNull.Value。
    • 否则,对产生的值指定过期时间后添加到缓存。