问题标签 [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 投票
1 回答
6386 浏览

c - Volatile and cache behaviour

I read post
C volatile variables and Cache Memory

But i am confused.

Question:
whether OS will take care itself OR
programmer has to write program in such a way that variable should not go into cache as mention like declaring variable as _Uncached.

Regards
Learner

0 投票
4 回答
9403 浏览

.net - 如何使 .NET MemoryCache 中的许多项目过期

从 MemoryCache 实例中删除大量项目的推荐方法是什么?

根据围绕这个问题的讨论,似乎首选方法是为整个应用程序使用单个缓存,并为键使用命名空间,以允许在同一实例中缓存多个逻辑类型的项目。

但是,使用单个缓存实例会导致从缓存中过期(删除)大量项目的问题。特别是在某种逻辑类型的所有项目都必须过期的情况下。

目前我找到的唯一解决方案是基于这个问题的答案,但从性能的角度来看,它真的不是很好,因为你必须枚举缓存中的所有键,并测试命名空间,这可能是相当耗时的!

目前我想出的唯一解决方法是为缓存中的所有对象创建一个带有版本号的瘦包装器,并且每当访问一个对象时,如果缓存版本与当前版本不匹配,则丢弃它。因此,每当我需要清除某种类型的所有项目时,我都会提高当前版本号,从而使所有缓存的项目无效。

上面的解决方法似乎很可靠。但我不禁想知道是否没有更直接的方法来完成同样的事情?

这是我目前的实现:

0 投票
1 回答
2400 浏览

c# - 跨工作进程清除 MemoryCache

我有一个在 IIS 7 上运行的 ASP.NET MVC 应用程序。它被设置为一个网络花园,工作进程的数量与我的处理器数量相匹配。我有时会承受一些沉重的负担,而这种设置效果最好。

我已经使用 System.Web.Cache 实现了一些缓存。我有时需要使缓存中的某些项目无效,但是我无法清除所有进程的缓存。

.NET 4 System.Runtime.Caching 功能是否让这更容易?这是一个类似的问题,但我希望.NET 4 有更好的建议。 在 IIS 网络服务器上的所有工作进程中刷新 HttpRuntime.Cache 对象

0 投票
2 回答
481 浏览

c# - 需要我的 asp.net mvc 解决方案的缓存解决方案

我的应用程序在执行此操作时会生成很多对象。对象是数据库查询的结果,它们是我们 ORM 解决方案的一部分。使用这些对象的程序通常会一一请求它们。

我想使用 System.Runtime.Caching 但我不确定如何使用,因为我有特定的标准:

每个用户都可以登录到不同的数据库。适用于所有对象。

数据库可以有几个不同的公司资料。适用于大多数对象。

大多数对象是多语言的。

某些对象仅在数据库事务处于活动状态时才被缓存,然后在回滚或提交时转储。

想到的第一个解决方案是为缓存生成一个复杂的字符串键(即数据库+公司+语言+对象主键值),但我不确定这是否是正确的方法。我也不确定如何实现事务范围的缓存。

如果我使用自己的实现,也许我会对缓存有更多的控制。像这样的东西:

0 投票
1 回答
50 浏览

c# - 这是内存管理方面的最佳链吗?

我们有一个将 C# poco 对象加载到内存中的系统。(从磁盘上的数据源反序列化)。它们进一步缓存在 ObjectCache (MemoryCache.Default) 中,并通过 Repository 类公开。链条是这样的:

RepositoryLoader.Load() - 这会将内存缓存中的项目缓存为 Dictionary ...

我的问题是——正如你所看到的,它也通过 2 个缓存属性进行——它是否会造成内存消耗的重复?:) 有没有办法优化这条链?

0 投票
1 回答
1680 浏览

c# - 如何确定 MemoryCache 类消耗了多少内存?

我们的产品基于内存中的对象数据集,该数据集保存在MemoryCache对象中。

我想知道缓存中存储的数据消耗了多少内存。

由于我们可能在同一台机器上运行产品的多个实例(每个实例都在它自己的应用程序域中),因此立即查看谁在消费什么是很重要的……

该类具有以下属性:CacheMemoryLimit 和 PhysicalMemoryLimit,但没有属性可以让我知道消耗了多少内存?

提前致谢!

0 投票
1 回答
7473 浏览

c# - .NET 4.0 MemoryCache 性能计数器在哪里?

.NET 4.0 MemoryCache 性能计数器在哪里?

我正在寻找他们的名字,但我找不到任何名字。

谢谢,

0 投票
7 回答
79407 浏览

c# - MemoryCache 线程安全,是否需要加锁?

对于初学者,让我把它扔在那里,我知道下面的代码不是线程安全的(更正:可能是)。我正在努力寻找一种实现,并且我实际上可以在测试中失败。我现在正在重构一个大型 WCF 项目,该项目需要缓存一些(大部分)静态数据并从 SQL 数据库中填充。它需要每天至少过期和“刷新”一次,这就是我使用 MemoryCache 的原因。

我知道下面的代码不应该是线程安全的,但我不能让它在重负载下失败并使事情复杂化,谷歌搜索显示了两种方式的实现(有和没有锁以及是否有必要的辩论。

在多线程环境中了解 MemoryCache 的人能否让我明确知道我是否需要在适当的地方锁定,以便在检索/重新填充期间不会抛出删除调用(很少调用但它是必需的)。

0 投票
1 回答
305 浏览

c# - CacheItemPolicy - SlidingExpiration“已访问”规则?

来自http://msdn.microsoft.com/en-us/library/system.runtime.caching.cacheitempolicy.slidingexpiration(v=vs.110).aspx ...

“在从缓存中逐出缓存条目之前必须访问缓存条目的时间跨度。默认值为 NoSlidingExpiration,这意味着该项目不应基于时间跨度过期。”

究竟什么是“访问”?这是否意味着如果我点击缓存的项目,例如:

它被认为是“访问”?

还是仅在我实际修改缓存项目时才被视为已访问?

0 投票
1 回答
948 浏览

c# - ObjectCache CachedObjectRemovedCallback 没有被调用?

我有一个 WCF 服务,它正在实现一个自定义 ObjectCache 来缓存第 3 方 COM 对象,以便与 3270 环境进行交互。

此第 3 方对象适用于许可模型,因此每次从缓存中删除对象时都必须调用我的 RemovedCallBack 以释放许可证。

我的问题是,我一直在使用许可证,但 ObjectCache 中什么也没有。这似乎项目正在从缓存中删除,但没有击中回调。这可能吗?如果我的缓存对象正在被 GC 清理,它们是否也会触发回调?

这是我的实现:

正在使用以下方式将项目添加到缓存中:

和删除的回调: