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

.NET MVC中如何将字符串缓存24小时并设置过期?

在.NET MVC中给MemoryCache设置24小时过期的方法

嘿,我明白你现在的困惑了!你之前直接用索引器赋值的方式设置缓存,确实没法自定义过期规则——因为索引器默认用的是无过期的策略。要实现24小时过期,咱们得用CacheItemPolicy来明确配置过期规则,下面一步步来:

一、设置绝对过期(24小时后必过期)

这应该是你需要的场景:不管缓存有没有被访问,24小时一到就自动失效。代码示例如下:

// 设置缓存,24小时后绝对过期
var cacheKey = "activeKey";
var cacheValue = "success";

// 创建缓存策略
var cachePolicy = new CacheItemPolicy
{
    AbsoluteExpiration = DateTimeOffset.Now.AddHours(24)
};

// 用Set方法存入缓存,传入策略
System.Runtime.Caching.MemoryCache.Default.Set(cacheKey, cacheValue, cachePolicy);

二、获取缓存的逻辑可以保持不变

你之前获取缓存的代码没问题,直接用索引器读取就行:

var activeKey = System.Runtime.Caching.MemoryCache.Default["activeKey"];
if (activeKey != null && (string)activeKey == "success")
{
    return true;
}
// 缓存不存在或过期时的逻辑
return false;

三、关于滑动过期的小说明

你提到看到了滑动过期的文档,这里简单区分下:

  • 绝对过期:到指定时间就失效,适合你这种需要固定24小时有效期的场景。
  • 滑动过期:每次访问缓存时,都会把过期时间往后顺延(比如设置滑动过期为1小时,每次访问就重新算1小时后过期)。如果缓存长时间没人访问,就会提前失效。配置方式是给CacheItemPolicy的SlidingExpiration赋值,比如:
var cachePolicy = new CacheItemPolicy
{
    SlidingExpiration = TimeSpan.FromHours(1)
};

不过注意,绝对过期和滑动过期不能同时设置,选其中一种就好。

这样配置后,你的缓存就会在24小时后自动过期啦,再也不用手动清理~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:14:42