gpt4 book ai didi

c# - 项目过期后无法将项目添加到内存缓存

转载 作者:行者123 更新时间:2023-11-30 16:06:42 25 4
gpt4 key购买 nike

我正在使用内存缓存来防止重新处理从队列中收到的消息。

以下是我创建缓存和添加项目的方式:

        _cache = new MemoryCache("TransactionProcessorCache");

_policy = new CacheItemPolicy
{
UpdateCallback = null,
AbsoluteExpiration = DateTimeOffset.UtcNow.AddMinutes(1)
};

_cache.Add("unique key", "value", _policy);

我将第一个项目添加到缓存中,我可以在预期的 1 分钟内检索该项目。

但是,一旦第一个项目过期并且缓存变空,我添加到缓存中的后续项目将无法检索。尽管从 _cache.Add(...) 调用中获得返回值“true”,缓存始终表现得好像它是空的。

我正在使用 .NET Framework 4.5.1。该应用程序是一个控制台应用程序。这里的MemoryCache来自System.Runtime.Caching

最佳答案

再看看这一行

AbsoluteExpiration = DateTimeOffset.UtcNow.AddMinutes(1)

您从当前时间起 1 分钟后永远禁用缓存。一分钟过后,您将不得不再次重新创建策略(或者每次要添加项目时都创建策略,然后它会按照您期望的方式运行)。

请参阅@JD.B 的回答以获得更好的常量策略。

关于c# - 项目过期后无法将项目添加到内存缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31855550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com