问题标签 [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 回答
2629 浏览

c# - 为什么 MemoryCache 中的滑动过期行为如此奇怪?

我不明白滑动过期应该如何在 System.Runtime.Caching.MemoryCache 和.NET 4.0 中工作。

根据文档,过期时间跨度是“在将缓存条目从缓存中逐出之前必须访问缓存条目的时间跨度”。

但是,以下单元测试失败:

巧合的是,我做了一个小改动,解决了这个问题。但是,如果它是错误或功能,现在有人吗?

一旦设置了 UpdateCallBack,过期将按预期工作:

0 投票
1 回答
445 浏览

c# - HTTPCache 和 MemoryCache 交叉依赖

我的项目主要使用 .net MemoryCache,但我确实有一个使用 HTTPCache 的组件。这使得交叉依赖更难处理。

无论如何我可以让两个缓存相互依赖吗?例如我可以给MemoryCache 的HTTPCacheChangeMonitor 和我可以给HTTPCache 的MemoryCacheDependency。

0 投票
1 回答
193 浏览

c# - 如何使用 MemoryCache 加速将各种对象转换为字符串?

我有一个来自 Linq-To-Sql 查询的大型数据集(IEnumerable属于[Table]-attributed 类对象),我需要从中生成一个 CSV 文件。我遍历数据集,并为每个项目使用各种格式选项将项目的每个属性的值转换为字符串。

问题是转换需要比运行查询更长的时间。数据集包含大量非规范化的数据 - 许多项目具有相同的属性,具有相同的值,只有一些属性具有不同的值。每个属性值都针对数据集中的每个项目单独翻译。因此,我的代码一遍又一遍地将相同的数据转换为相同的字符串。而且我想以某种方式加快速度,最好不要更改 SQL 查询。

看起来MemoryCache可以工作,但我需要为每个对象制作唯一的键。我不知道如何才能足够可靠和有效地制作这样的密钥。

如何使用MemoryCache以便我可以缓存不同类型对象的翻译结果?

0 投票
3 回答
3340 浏览

c# - 使用对象哈希码作为内存缓存键是否有意义?

我正在尝试在 MemoryCache 对象中缓存昂贵函数的结果。

MemoryCache 需要一个字符串键,所以我想知道执行以下操作是否有效:

使用单个 UTF32 字符作为潜在大缓存的键感觉很奇怪。

0 投票
1 回答
194 浏览

.net - 即将过期的字典

我希望有一个并发字典,如果在一段时间内没有使用这些项目,它们就会过期。

现在这似乎是一个相当简单的类,但我已经做了一些搜索并遇到了MemoryCache。这似乎正是我想要的(参见 参考资料CacheItemPolicy.SlidingExpiration)。我想知道这是否符合我的要求 - 或者我的用例是否有任何明显的缺点?

这是一个客户端 WPF 应用程序。

0 投票
0 回答
1202 浏览

c# - 自更新内存缓存

我已经实现了一个缓存,当它们过期时更新包含的值。

我的代码是这样的:

但有些不对劲。

上面在提示中这样写:

...我会期待像

我错过了什么?

2014 年 5 月 14 日更新:

我已将字段级变量更改为局部变量 - 但存在相同的行为。还要注意,从缓存中删除的顺序发生了变化——首先是“errors-then-warns”——但下一次是“warns-then-errors”。

另请注意,第一次从缓存中删除是在 21 秒后 - 在此之后它每 20 秒不断发生。

我的整个(新代码)在这里:

0 投票
1 回答
95 浏览

ruby-on-rails - 使用 memcachier 与普通 Rails.cache 的优势

我看到这篇文章https://devcenter.heroku.com/articles/memcachier

我只想问将缓存存储在 memcachier 中的主要优势是什么。
与仅在服务器本身上缓存相比,使用其他服务进行缓存有什么优势?

在 Rails 中进行低级别缓存时,它有什么特别的优势吗?

0 投票
1 回答
2412 浏览

c#-4.0 - 通过 CacheEntryRemovedCallback 刷新 MemoryCache 时防止脏读

我已经实现了一个 MemoryCache,它通过 CacheEntryRemovedCallback “自动刷新”内容。

但是,当从缓存中删除项目时,我在防止脏读时遇到问题。

我的缓存确实被请求破坏了,我需要确保缓存条目在更新时被阻止读取。

我的代码如下。如您所见,我尝试在更新缓存以及读取数据时使用简单的 lock()。但是,在删除项目并获得锁的时间内完成读取。

我的日志是这样说的:

令我困惑的是,获得了“获取”锁定,并且在释放之前还获得了“更新”锁定。

(我正在使用 log4net 进行日志记录)

我究竟做错了什么?

0 投票
1 回答
4453 浏览

c# - MemoryCache 和多个每次调用 WCF 服务

MemoryCache如果我希望缓存的数据在多个 WCF 服务中可见(使用PerCall实例模式) ,那么使用该类是一个有效的选项吗?

有两种情况:

  1. 这些服务都托管在 IIS 的同一个应用程序中
  2. 这些服务托管在同一服务器上的不同 IIS 应用程序中
0 投票
1 回答
551 浏览

c# - 在 C# 中使用内存缓存的最有效方法是什么

在 WCF 应用程序中,我在数据库中有 80k+ 行很少更改。我想将它们缓存在内存中以便更快地查找。我应该能够在需要时驱逐他们。我为它找到了一些 C# 库。其中一些在内部使用 MemoryCache,而另一些则使用 ConcurrentDictionary。由于 MemoryCache 和 ConcurrentDictionary 都是线程安全的,我应该选择 MemoryCache 是否还有其他好处,反之亦然?