用 Windows 和.NET 进行 Memcached

是否有人已经在 Windows 环境中实现了用于生产的 memcached? 因为我读过很多博客,所以不推荐在 Windows 中运行 memcached,尤其是在生产环境中,例如 在窗口上运行 memcached

还有一件事,哪个 memcached 客户端可以很好地与 c # 和. net 3.5一起使用? 我发现了许多替代品,比如 Memcached 提供程序@CodruxBeitmemcached和 memcached Provider@Sourceforge.net/Projects/memcacheddotnet

55718 次浏览

我不知道你在做什么项目,但是你可能想看看微软 Velocity 项目 页面内容:

“ Velocity”是一种分布式内存 应用程序缓存平台 开发可扩展的高性能 应用程序。“速度”可以使用 缓存任何通用语言运行库 (CLR)对象并提供访问 通过简单的 API 是分布式缓存 性能,可扩展性,以及 可用性。

我已经看到了一些演示,它看起来真的很好地与.net 框架集成。

客户端 API 的问题在于,您仍然必须使用 LAMP 堆栈在另一个机器上运行 memcached 实例。使用速度意味着您仍将在同一堆栈上运行,并且跨。网络平台。

话虽如此,如果您想使用速度作为其他。您可能会发现自己必须编写自己的 API 来公开速度数据以供使用。

为什么需要在 windows 上运行 memcached。

如果您的代码需要在 Windows 环境中运行,请获取一个 Windows memcached 客户端,并与基于 * nix 的 memcached 计算机对话。

在 Server2003或2008上运行 memcached 的生产环境中,这意味着您可以获得所有这些机器的许可证。Linux 将为您提供所有开放源码软件的好处。在 Windows 上,TCO 将随着 memcached 的增加而线性增长

编辑:

从我写这个答案到现在已经有1.5年了,从那以后很多事情都变了。你得注意了,尤其是像达斯汀这样的评论。
下面是如何在窗口上运行 memcached 的方法。
通常,如果您计划在同一台生产计算机上运行 memcached,那么您希望在有限的内存中启动它,也就是说,定义 memcached 允许使用的最大内存。

C: 程序 Files memcached > memcached.exe-m 128文件 memcached > memcached.exe-m 128。

在这里,memcached 的最大使用量为128 mb。您不希望 memcached 占用您 Web 服务器上的所有内存。

当您决定使用 扩大规模 memcached 时,您需要考虑我之前所说的内容。另外,压缩键值组合中的值。Web 服务器通常只消耗很少的 CPU (2-3%) ,与 CPU 使用率相比,压缩为整个网络带来了很多价值。如果您过于关心正常压缩,请尝试 LZO

Velocity 管理起来要复杂一些,但它比 memcached 强大得多。我不反 memcached,一点也不,它是伟大的。但是向前看,新的项目是纯粹的。NET 是疯狂的不利用速度,即使在其目前的未发布状态。

客户端 API 的问题在于,您仍然必须使用 LAMP 堆栈在另一个机器上运行 memcached 实例。

完全不是。运行 Memcached 不需要 LAMP (Linux、 Apache、 MySQL、 PHP)堆栈。我目前更喜欢 memcached 超过速度,直到速度超出 CTP。我玩了一会儿速度,但发现它太笨重了。我喜欢 KISS 那套,简单点。没有比缓存更简单的了... 获取(键) ... 放置(键,值) ... 销毁(键)。

由于当时 Velocity 还不存在,我为我工作的公司 Skiviez 在 Windows 上使用了 memcached 端口。它主要是为同一台机器上的多个工作进程提供一个集中的缓存。它已经在一个适度使用的电子商务网站上运行了大约18个月(每天约18,500次点击)。我使用的客户端是作为 iBATIS.NET 的缓存提供程序集成的 伊尼姆。这个客户机似乎工作得很好; memcached 客户机一开始也不是很复杂。

如果我不得不再次这样做,我可能会考虑 Velocity,如果我决定继续使用 Windows 的分布式缓存解决方案的话。但它现在起作用了,所以我不会碰它。

(旁白: 从那时起,我通过向数据库中的关键表添加某些 Cache*列来消除对缓存的大部分需求,这些关键表每天晚上通过计划任务进行更新。这最终减少了对所有资源的压力,从查询数据库对 CPU 时间的最初影响,到将缓存结果保存在 memcached 中对内存可用性的后续影响。当访问数据的缓存版本时,它还使代码中的内容更加明确,而不是使用动态计算版本。我相信您有很多理由使用分布式缓存,但是退一步考虑您是否真的需要它总是值得的!)

看看 SharedCache。它是开源的,易于使用,非常可靠。

高性能的分布式内存对象缓存系统,本质上是通用的,但是旨在通过减轻数据库负载来加速动态 Web 和/或赢得应用程序。别忘了来 http://www.sharedcache.com看我们

我很惊讶这里还没有人提到 雷迪斯——它是功能最丰富、速度最快的键值数据存储器之一(入门级 linux 框每秒110,000 SET) ,对字符串、集合、列表、排序集合和散列提供了丰富的数据结构支持。

虽然 windows 不是一个官方支持的平台,但是它在所有测试通过的窗口下运行得非常完美。我在这里有可用的 windows 版本(使用 Cygwin) : Https://github.com/servicestack/servicestack

它还为当今使用的几乎所有编程语言提供了客户端绑定。我维护了一个丰富的开源 C # Redis 客户端,该客户端对任何 C # POCO 类型、事务支持和线程安全客户端管理器都提供了本地 API 支持,可以放入任何 IOC: Https://github.com/servicestack/servicestack

我知道我来得有点晚了已经有很多好答案了。

我们在 Windows 服务器上使用 Membase 获得了巨大的成功。它是100% 兼容 Memcached,并有一个不错的 GUI 安装程序和 Web 配置服务器构建它。这是非常容易管理。

还包括其他 NoSQL 特性,这些特性超出了本线程的范围,但值得一看。他们确实拥有开发、测试和(有限的)生产服务器的免费许可证。

Membase 下载

如果你不想在 Membase 使用任何额外的功能,那么同一个页面有一个仅适用于 Memcached 的 Windows 安装。

如果您有兴趣在 Windows 上运行 memcached 客户端,那么还有两个额外的开源服务器可以完成这项工作。它们都实现了标准的 memcached 服务器协议,并且都是用 Java 编写的,因此可以在 Windows 上运行。