Microsoft.Extensions.Caching.Memory.IMemoryCache 线程安全吗

2023-12-28

我们正在使用 .NET Core 3.1 和Microsoft.Extensions.Caching.Memory.IMemoryCache https://www.nuget.org/packages/Microsoft.Extensions.Caching.Memory/3.1.24(v3.1.24) 及其实施Microsoft.Extensions.Caching.Memory.MemoryCache。我正在阅读有关的文档内存缓存 https://learn.microsoft.com/en-us/aspnet/core/performance/caching/memory?view=aspnetcore-3.1。我没有发现任何提及线程安全的内容IMemoryCache。这是我们如何使用它的片段:

public class TestController : Controller
{
    private readonly IMemoryCache _memoryCache;

    public TestController(IMemoryCache memoryCache)
    {
        _memoryCache = memoryCache;
    }

    [HttpGet]
    public IActionResult TestAction()
    {
        string key = "abc";
        if (!_memoryCache.TryGetValue(key, out string cachedString))
        {
            cachedString = "new string";
            _memoryCache.Set(key, cachedString, TimeSpan.FromMinutes(15));
        }
        return Ok();
    }
}

Are _memoryCache.TryGetValue and _memoryCache.Set线程安全?文档中哪里提到了它?


TL;DR 是的,它是线程安全的。

如果你查看这些的源代码Set扩展方法,当与Microsoft.Extensions.Caching.Memory.IMemoryCache您会找到 MemoryCache.SetEntry 方法。

里面有一个CoherentState由并发字典支持的类,用于实际存储缓存条目。还有大量代码(和注释!)讨论其他线程上发生的更新/清除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Microsoft.Extensions.Caching.Memory.IMemoryCache 线程安全吗 的相关文章

  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile

随机推荐

  • 向客户端广播数据包在java中不起作用

    我有多个发射器 配置为当它们收到从服务器通过本地端口 5255 远程端口 5252 发送的广播数据包时发回响应 其中包含字符串 AST show me 0 如发射器手册中所述 这应该可以帮助我扫描本地网络内的所有发射器 我已经实现了一个服务
  • 使用 LINQ to XML 生成动态 sitemap.xml 时如何正确生成 xsi:schemalocation 属性?

    我正在生成动态 sitemap xml 根据站点地图 org http www sitemaps org protocol php这是 sitemap xml 的标头
  • Excel VBA 中的公共与私有/暗淡

    我可以使用一些帮助来理解在 Excel 2013 VBA 的模块中使用 Public 与 Dim 首先 我想说我确实找到了这篇很棒的文章 它具有出色的定义 请参阅下面的链接 但没有示例 我可以使用一些示例来说明如何将公共变量应用到我的项目中
  • 矢量分段故障的矢量

    当我尝试为这个向量向量赋值时 我不断遇到分段错误 我基本上是从图像中读取像素 然后尝试创建一个向量向量 您可以访问该行 然后访问该行上的像素以获取该点的像素 但是当我尝试将特定像素分配给像素值时 它会给我一个分割错误 我使用占位符 255
  • 如何将一个Makefile中的两个不同的源目录输出到一个bin目录?

    我有以下 Makefile 来构建我的 erlang 项目 SUFFIXES erl beam yrl ERL SRC wildcard src erl ERL OBJ patsubst src erl ebin beam ERL SRC
  • Apache Spark:处理 RDD 中的 Option/Some/None

    我正在映射一张 HBase 表 为每个 HBase 行生成一个 RDD 元素 然而 有时该行有坏数据 在解析代码中抛出 NullPointerException 在这种情况下我只想跳过它 我的初始映射器返回一个Option指示它返回 0 或
  • 在android.java中读取Excel文件

    我编写此代码来读取 Excel 文件 并将其粘贴到资产文件夹 我的文件名 book xls 中以读取它 但是当我按下按钮显示文件时它不起作用并且不显示任何内容 请帮助我解决我的问题 多谢 这是我的代码 package com example
  • 关于ImageIcons的方法不起作用

    import java awt import java awt event import javax swing public class Cards extends JFrame private GridLayout grid1 JBut
  • Python:获取默认网关的MAC地址

    Python 有没有什么快速的方法来获取MAC地址 of the 默认网关 我什么也做不了ARP 请求来自Linux我正在运行代码的机器 所以它必须直接来自ARP表 以下 DevFS 文件将提供此信息 proc net arp proc n
  • 与黎曼求和 Python 集成

    我一直在尝试用黎曼和求解积分 我的函数有 3 个参数 a b d 因此 a 是下限 b 是上限 d 是其中的部分a n 1 d lt b 到目前为止 这是我的代码 我的输出是28 652667999999572我应该得到的是28 66665
  • 如何使用 TypInfo 单元中的 GetSetProp 和 SetSetProp

    我有一组枚举值 需要将其转换为文本 然后再转换回集合 我相信 TypInfo 单元的 GetSetProp 和 SetSetProp 允许执行此操作 但我不知道如何让它工作 关于如何使用 GetSetProp 和 SetSetProp 来完
  • p5.j​​s - 随机()、高度和宽度未定义?

    我正在尝试使用 p5 js 让球在画布上弹跳 但似乎width height and random 没有定义 这是我的全部代码 function setup createCanvas 640 480 background 240 var d
  • python中的非局部极大值抑制

    Goal 输入图像 2d numpy 数组 和窗口大小 并输出相同的数组 其中保留局部最大值 但其他地方为 0 我正在挣扎的是 我认为我在代码中犯了一个愚蠢的错误 也许我的循环中有一些拼写错误 但我不确定 局部最大值仅位于图像的左侧 这是不
  • MySQL - 也使用外键作为主键

    我的表 1 有一个主键user id和表 2 其中user id是外键 每条只有 1 条记录user id可以存在于表2中 并且没有它就不能存在任何记录 问 可以user id表 2 中的外键和主键同时存在 如果是 这是一个好主意吗 优点
  • 在 Silverlight 中绑定 XML,无需标称类

    假设我有一个简单的 XML 块
  • Symfony2,控制器中的一个操作是否可以有两个路由?

    我的控制器类中有一个操作 我想要两条不同的路线 如下所示 Displays a form to create a new entity Route edit choose date name user choose date Route s
  • 可以从网络链接启动 iOS 应用程序

    我的应用程序将用户从应用程序弹出到 safari 中执行一些 web 操作 尝试使用 webview 但还有其他关于布局 使用 重新启动应用程序 服务器错误等的问题 当他们完成后 我希望最终网页上有一个链接 让他们重新启动应用程序 我认为这
  • Angular2 + System.js - 使所有文件在本地加载

    我正在制作 Angular2 应用程序 主要的 HTML 是这样的
  • Tomcat7 中带有 Facelets 的 JSF

    我正在尝试将带有 Facelets 1 1 14 的 JSF 2 0 应用程序部署到 Tomcat7 我收到以下异常 INFO Initializing Mojarra 2 0 0 FCS b23 for context AdminUI 3
  • Microsoft.Extensions.Caching.Memory.IMemoryCache 线程安全吗

    我们正在使用 NET Core 3 1 和Microsoft Extensions Caching Memory IMemoryCache https www nuget org packages Microsoft Extensions