单个 MemoryCache 实例与多个 MemoryCache 实例

2024-01-04

MemoryCache 默认情况下带有默认缓存,并且可以创建其他命名缓存。

似乎在不同实例中隔离不同进程的结果的缓存可能有优势。例如,针对索引的查询结果可以缓存在“IndexQueryResult”缓存中,而数据库查询的结果可以缓存在“DatabaseQueryResult”缓存中。这是相当做作的,但解释了原理。

导致驱逐的一个缓存上的内存压力是否会影响其他缓存? .Net 管理多个缓存的方式与管理一个缓存的方式有什么不同吗?

我是否在浪费时间考虑多个缓存的想法,或者这样做有真正的价值吗?


我无法回答前几个问题,但我有兴趣听到这些问题的答案。不过,我可以说,到目前为止,我们在产品中使用多个缓存获得了良好的体验。以下是我看到的好处:

  • 减少按键碰撞的机会:我们可以简单地创建一个特定于给定存储库类型的缓存,并且知道只要该存储库类使用唯一的键,而不是提出某种方案来确保没有两个单独的值最终具有相同的键到它的对象,我们不会发生碰撞。
  • 通过缓存驱逐提高精度:“拥有”特定缓存实例的存储库类型可以订阅系统范围事件总线上的某些事件类型,以便它知道何时需要清除缓存的某些部分。如果幸运的话,它可以纯粹根据已发布事件的参数来确定要清除的条目的键。然而,情况通常并非如此,我们必须清除整个缓存或迭代所有缓存的值以找出哪些值受到已发布事件的影响。如果我们对系统中的所有数据类型使用单个缓存实例,我们最终会爬取大量不相关的条目。通过使用单独的缓存,我们可以将搜索限制为该特定存储库负责填充的值。

关于第二点:我们还构建了一个 UI 来公开系统中的所有缓存实例,并允许我们通过单击按钮来清除其中的任何一个。当我们需要直接对数据库进行更改并且需要系统无需重新启动服务器即可获取这些更改时,这会派上用场。同样,如果我们只使用单个缓存,我们就不可能那么精确:我们必须清除系统范围内的所有缓存值,而不仅仅是与我们修改的数据类型关联的值。

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

单个 MemoryCache 实例与多个 MemoryCache 实例 的相关文章

  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 指针问题(仅在发布版本中)

    不确定如何描述这一点 但我在这里 由于某种原因 当尝试创建我的游戏的发布版本进行测试时 它的敌人创建方面不起作用 Enemies e level1 3 e level1 0 Enemies sdlLib 500 2 3 128 250 32
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • 如果使用 SingleOrDefault() 并在数字列表中搜索不在列表中的数字,如何返回 null?

    使用查询正数列表时SingleOrDefault 当在列表中找不到数字时 如何返回 null 或像 1 这样的自定义值 而不是类型的默认值 在本例中为 0 你可以使用 var first theIntegers Cast
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 在 Dynamics CRM 插件中访问电子邮件发件人地址

    我正在编写一个 Dynamics CRM 2011 插件 该插件挂钩到电子邮件实体的更新后事件 阶段 40 pipeline http msdn microsoft com en us library gg327941 aspx 并且在此阶
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐

  • 更新和替换字符串的一部分

    我有一个有两列的表格 ID and Value 我想更改第二列中一些字符串的一部分 表格示例 ID Value 1 c temp 123 abc 111 2 c temp 123 abc 222 3 c temp 123 abc 333 4
  • 执行ContentResolver插入时出错

    执行插入新数据到内容提供程序时出错 请参见下面的代码 PS 我只是将下面的代码直接放入 Activity 的 onCreate 中 然后执行 ContentValues values new ContentValues values put
  • 谁定义了正则表达式?

    W3C 定义了 HTML 标准 CSS 标准和一些其他标准 我知道还有其他团体也定义了标准 谁定义了正则表达式的语法 正则表达式由多个标准机构涵盖 包括 IEEE 标准 1003 1 所谓的 Posix http pubs opengrou
  • 将 UTC 日期转换为日期时间字符串 Titanium

    我有一个日期字符串 2012 11 14T06 57 36 0000 我想转换为以下格式 2012 年 11 月 14 日 12 27 我尝试了很多解决方案 包括将 UTC 日期转换为日期时间字符串 Javascript https sta
  • 将随机排列代码从 MATLAB 移植到 Python

    如何将这段 MATLAB 代码转换为 Python 例如 对于随机文件 FileA rand 10 2 FileB randperm 10 for i 1 10 fileC FileB i 1 FileA i 1 for the x fil
  • PyQt QMediaPlayer setPosition 对位置值进行四舍五入

    我有一个应用程序 旨在帮助同步实验视频和数据信号 该应用程序有一个视频小部件和一个滑块 可以设置视频的时间位置 然而 QMediaPlayer 只会以 500 毫秒 1000 毫秒的间隔设置位置 在我的应用程序中为 500 毫秒 在设计的应
  • Javascript 和 PHP 中十进制转 RGB

    我正在尝试将十进制值转换回 RGB 值 假设这是编译十进制值的公式 c r 255 255 g 255 b 例如 rgb 16 120 78 加起来是 1071078 如何在没有任何 溢出 的情况下求解 r g 和 b 提前致谢 使用除法
  • 我的 NDK 项目因 CPU 架构相关问题而无法编译

    有人可以解释一下为什么我会收到此错误吗 Build command failed Error while executing process C Users Kevin Desktop Android Sdk ndk bundle ndk
  • Dalvik的内存模型和Java的一样吗?

    Dalvik的内存模型和Java s http java sun com docs books jls third edition html memory html 17 4 我特别感兴趣的是是否读写参考和非long non double原
  • 在CALayer中添加UIImage

    我必须添加 UIImageView 作为 MapView 的子视图 为此 我在 MapView 上方创建了一个图层 在这一层中 我想放置我的图像 但我得到一个白色矩形 没有其他东西 我的图像不可见 这是代码 void viewDidLoad
  • 每当我创建新的 Rails 应用程序时,如何创建 Postgres 用户和数据库?

    我遵循了这个非常有用的教程 http blog willj net 2011 05 31 setting up postgresql for ruby on rails development on os x http blog willj
  • glewInit() 因“缺少 GL 版本”、SDL2 OpenGL 上下文、cygwin 编译器而失败

    下面的程序创建一个窗口 该窗口除了按 esc 关闭外不执行任何操作 当我用cygwin编译它时 没有错误 我使用的GLEW来自CYGWIN 端口 http cygwinports org SDL2 是版本 2 0 3 来自他们的websit
  • WPF 与 Unity 容器 - 如何注册 ViewModel 并将其解析为 View

    您好 我正在尝试在 WPF MVVM 应用程序中使用 Unity 容器 我没有使用过 Prism 因为它看起来很重 这是应用程序结构 我试图弄清楚如何将视图解析为视图模型以及视图模型 服务 的依赖关系 应用 Views MainWindow
  • 如何更改 UIDatePicker 色调颜色?

    我知道 UIDatePicker 无法自定义 但我想知道 iOS 14 提醒应用程序如何显示蓝色色调 而日历显示红色色调 我将 AppDelegate 中的全局色调设置为 label如下所示 但无法为日期选择器设置相同的值 UIView a
  • Debugdiag 显示“Microsoft VC 运行时堆”使用超过 1GB

    您好 我的 WPF 应用程序存在泄漏 我正在尝试使用内存转储文件来查找问题所在 使用 WinDbg 和 SOS 我找不到任何可疑的东西 然后我尝试了 DebugDiag 我得到了Microsoft VC 运行时堆 私有 有 1 42 GB
  • Dart DateTime.parse timeZoneOffset 始终为 0

    DateTime parse 创建的 DateTime 似乎总是为 timeZoneOffset 返回 0 我在非 UTC 时区中创建了一个 ISO8601 字符串 https timestampgenerator com 16100103
  • 如何使 say 命令回显脚本中的变量值?

    我使用的是 Mac 有时我会使用say命令位于我的脚本末尾 如下所示 system say Finished successfully 但如果我尝试插入一个变量 system say my variable 它不起作用 它仅回显变量名称 我
  • 使用 dllexport 从 DLL 导出函数

    我想要一个从 C Windows DLL 导出函数的简单示例 我想看看标题 cpp文件 以及 def文件 如果绝对需要 我希望导出的名称是未装饰的 我想使用最标准的调用约定 stdcall 我想要使 用 declspec dllexport
  • 如何通过单击按钮从“关于”返回到上一个活动?

    我试图通过单击按钮从 关于 对话框返回到主要活动 public class AboutActivity extends Activity implements OnClickListener Override protected void
  • 单个 MemoryCache 实例与多个 MemoryCache 实例

    MemoryCache 默认情况下带有默认缓存 并且可以创建其他命名缓存 似乎在不同实例中隔离不同进程的结果的缓存可能有优势 例如 针对索引的查询结果可以缓存在 IndexQueryResult 缓存中 而数据库查询的结果可以缓存在 Dat