.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
相关产品推荐
相关产品推荐

