问题标签 [memorycache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6032 浏览

c# - C# 4.0 MemoryCache - 如何在更改依赖项时驱逐依赖项缓存条目

当对它们所依赖的其他条目进行更改时,我试图从 MemoryCache 中逐出条目。这是通过为依赖键上的依赖项创建缓存条目更改监视器来设置的:

OnChangedCallBack方法是这样的:

这些项目按预期添加到缓存中,并且在OnDependencyChanged对受监视的键进行更改时按预期调用该方法,但是传递给它的“状态”实例始终为空,这意味着我对缓存一无所知依赖项已更改并因此无法执行计划驱逐的键。

我在这里错过了什么吗,我是不是走错了路?

0 投票
7 回答
26722 浏览

c - C volatile 变量和高速缓存

缓存是由缓存硬件对处理器透明控制的,所以如果我们在 C 程序中使用 volatile 变量,如何保证我的程序每次都从指定的实际内存地址读取数据而不是缓存。

我的理解是,

  1. Volatile 关键字告诉编译器不应该优化变量引用,而应该按照代码中的程序来读取。

  2. 缓存由缓存硬件透明地控制,因此当处理器发出地址时,它不知道数据是来自缓存还是来自内存。

因此,如果我需要每次都必须读取内存地址,我如何确保它不是从缓存中引用,而是从所需地址引用?

不知何故,这两个概念并不能很好地结合在一起。请澄清它是如何完成的。

(假设我们在缓存中有回写策略(如果需要分析问题))

谢谢你,微内核:)

0 投票
2 回答
26099 浏览

c# - 使用多个 MemoryCache 实例

我想使用System.Runtime.Caching命名空间向我的应用程序添加缓存功能,并且可能希望在多个地方和不同的上下文中使用缓存。为此,我想使用几个 MemoryCache 实例。

但是,我在这里看到不鼓励使用多个 MemoryCache 实例:

MemoryCache 不是单例,但您应该只创建几个或可能只创建一个 MemoryCache 实例,并且缓存项目的代码应该使用这些实例。

多个 MemoryCache 实例将如何影响我的应用程序?我觉得这很奇怪,因为在我看来,在应用程序中使用多个缓存是一种非常常见的情况。

编辑:更具体地说,我有一个类应该为每个实例保留一个缓存。我应该避免使用MemoryCache并寻找不同的缓存解决方案吗?在这种情况下使用是否MemoryCache被认为是不好的,如果是这样,为什么?

0 投票
1 回答
896 浏览

c# - MemoryCache 项目删除回调并优雅退出

将项目存储在 MemoryCache 中后,我需要在它们被删除时进行一些清理。我设置了一个已删除的项目回调,效果很好。我的问题是,如果应用程序异常退出(例如异常退出或在系统关闭期间终止),我如何确保为缓存中的每个对象调用我的回调?

附加信息:缓存的元素包含对 API 的调用的运行计数 - 每个用户一个对象。我想在它们退出缓存时将这些计数提交回数据库,因此我不需要在每次调用时都在数据库中运行更新,这是我进程中的当前瓶颈。

0 投票
2 回答
4270 浏览

asp.net-mvc - .Net 4 内存缓存类和用户会话

.Net 4.0 中的新类MemoryCache看起来就像 asp.net 缓存一样。我的问题是:

MemoryCache 是否等同于在会话缓存中为用户存储对象/值,而不是在 aspx 页面后面的代码中。

存储在服务器上的 MemoryCache 中的值是否可以被网页事件访问?

0 投票
1 回答
26001 浏览

.net - MemoryCache.Add 和 MemoryCache.Set 有什么区别?

我阅读了MSDN 文档,但并没有真正理解它。

我相信 的行为Set是“替换现有的,或添加”(原子地)。

那是对的吗?

0 投票
4 回答
11682 浏览

c# - 支持区域的 MemoryCache?

我需要添加缓存功能并找到一个名为 MemoryCache 的新类。但是,我发现 MemoryCache 有点残废(我需要区域功能)。除其他事项外,我需要添加诸如 ClearAll(region) 之类的内容。作者做了很大的努力来保持这个类没有区域支持,代码如下:

几乎所有方法都能飞。我没有看到一种简单的方法来覆盖这种行为。我能想到的添加区域支持的唯一方法是添加一个新类作为 MemoryCache 的包装器,而不是作为从 MemoryCache 继承的类。然后在这个新类中创建一个 Dictionary 并让每个方法“缓冲”区域调用。听起来很恶心和错误,但最终......

您知道将区域添加到 MemoryCache 的更好方法吗?

0 投票
2 回答
533 浏览

appharbor - 在 AppHarbor 上模拟后台任务

我正在使用 System.Runtime.Caching.MemoryCache 来模拟部署在 AppHarbor 上的正在运行的 .NET MVC 应用程序上的重复任务。

缓存中的条目是使用 CacheItemPolicy 添加的,它包含一个 AbsoluteExpiration 偏移量和一个 RemovedCallback,它调用一个方法并重新触发在缓存中添加项目(如此所述)

MemoryCache 第一次在 Application_Start 中填充。它在本地运行良好,但在 AppHarbor 上部署后似乎无法运行(也尝试使用 HttpRuntime.Cache,结果相同)。

我的应用程序在 AppHarbor 上只有一名工作人员的 CANOE(免费)帐户下运行。这是否意味着在升级到某些付费计划之前我将无法模拟后台任务?

谢谢!

0 投票
1 回答
83 浏览

browser - 不缓存到磁盘的浏览器

是否有任何已知的 Web 浏览器实现(或浏览器选项)明确不将页面(和其他数据)缓存到磁盘?

我正在寻找一种仅缓存到内存的实现(显然,当进程退出时缓存被丢弃)。我忽略了诸如操作系统分页之类的外部磁盘写入因素。

0 投票
3 回答
3778 浏览

c# - MemoryCache UpdateCallback 不起作用

我正在尝试创建一个与第三方 API 的连接池,如果连接未在使用中,则会在一段时间后过期。当它们过期时,需要通过第三方 API 断开它们。

看来 MemoryCache (System.Runtime.Caching) 会处理这个问题。不过,UpdateCallback 的行为似乎很奇怪。

一个简单的 LINQPad 示例:

如果我运行它,输出是:

它不输出“到这里”。

如果我注释掉以 开头的行policy.UpdateCallback,则输出为:

我究竟做错了什么?

如果有更好的方法来完成我的任务,我愿意接受其他建议。