You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core中如何使用MemoryCache类缓存和读取用户列表

问题1:获取Users类型的列表数据

你只需要把Get方法的泛型参数替换为List<Users>,同时使用你提前约定好的、对应用户列表的缓存键即可,示例代码如下:

// 示例缓存键约定为"All_Users_List",可根据自身业务规则自定义
List<Users> usersList = _memoryCache.Get<List<Users>>("All_Users_List");

如果未命中缓存,上述代码返回的结果为null。

问题2:列表未缓存时的存入操作

你可以直接调用Set方法手动写入缓存,同时支持配置绝对过期时间、滑动过期时间等缓存策略,示例如下:

// 第一步:未命中缓存时,先从业务数据源查询用户列表
List<Users> usersFromDb = _dbContext.Users.ToList();

// 第二步:写入缓存,示例配置为绝对过期时间10分钟
_memoryCache.Set("All_Users_List", usersFromDb, TimeSpan.FromMinutes(10));

更推荐使用内置的GetOrCreate/GetOrCreateAsync方法简化逻辑,不需要手动判断缓存是否存在,框架会自动处理「缓存命中直接返回、未命中则执行委托逻辑写入缓存再返回」的流程:

// 同步写法
var usersList = _memoryCache.GetOrCreate("All_Users_List", cacheEntry =>
{
    // 配置缓存过期策略
    cacheEntry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10);
    // 执行查询逻辑返回要缓存的数据
    return _dbContext.Users.ToList();
});

// 异步写法
var usersList = await _memoryCache.GetOrCreateAsync("All_Users_List", async cacheEntry =>
{
    cacheEntry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10);
    return await _dbContext.Users.ToListAsync();
});

内容的提问来源于stack exchange,提问作者Pouria sh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:30:02