【发布时间】:2011-03-16 07:04:54
【问题描述】:
我想知道人们对 .net 内存缓存解决方案的体验如何。
我们需要一个(最好是免费的)进程外缓存解决方案,我们可以在多个不同的网站(不同的应用程序池)以及一些定期运行的控制台应用程序之间共享它。
到目前为止,我们已经尝试了一些解决方案,这两种解决方案都很好,但会引发一些问题,使其不太适合生产:
1) 带有 .net 客户端的 win32 Memcached
我们的第一个解决方案是使用 memcached 的 win32 端口 (http://jehiah.cz/projects/memcached-win32/) 和一个 .net 客户端库 (http://sourceforge.net/projects/memcacheddotnet/)。
它很好并且运行了一段时间没有问题,但随后我们开始看到很多无法解释的错误 - 客户端库将无法写入缓存。不确定这是否是 memcached 的 win32 端口或客户端库的问题,但我对使用相同解决方案的其他人缺乏可见性感到不舒服,并寻找一个纯 .net 解决方案,这导致我...... .
2) 共享缓存
看起来不错,似乎在社区中很受欢迎。设置起来非常简单,并且提供了比我们之前的解决方案更多的功能(例如,能够获取所有缓存对象的列表)。这看起来是一个非常好的解决方案,但我们最近开始看到一些问题正在蔓延:
- 内存消耗,有一个问题是它没有很好地释放内存,即使我们只保存了 30M 的缓存数据,服务也使用了 700M
- 尝试从缓存中检索对象时偶尔会出现 CacheExceptions(尤其是对于较大的缓存对象)
所以这两种解决方案都不是正确的。我很想知道其他人正在采用什么解决方案。有关信息,我们的服务器设置目前只有 32 位 windows box,因此我们没有专用的 linux memcached 服务器选项。
【问题讨论】:
标签: .net asp.net caching memcached