83

是否有人已经在 Windows 环境中实现了 memcached 以供生产使用?因为我读过很多博客,所以不建议在 Windows 中运行 memcached,尤其是用于生产用途,例如在 windows 上运行 memcached

还有一件事,哪个 memcached 客户端适合与 c# 和 .net 3.5 一起使用?我发现了许多替代方案,例如Memcached Providers @ CodeplexBeitmemcachedmemcached 提供程序 @ Sourceforge

4

11 回答 11

49

为什么需要在 windows 上运行 memcached?在生产环境中这是一件昂贵的事情。

如果您的代码需要在 Windows 环境中运行,请获取 Windows memcached 客户端并与基于 *nix 的 memcached 机器通信。

在 Server 2003 或 2008 上运行 memcached 的生产环境中,意味着您可以获得所有这些设备的许可证。Linux 将为您提供所有 OSS 的好处。TCO 将随着 Windows 上的 memcached 线性上升

编辑:

我写这个答案已经过去了大约 1.5 年,从那以后很多事情都发生了变化。你必须注意,尤其是当像达斯汀这样的人发表评论时。
所以这里是你如何在 Windows 运行时获取 memcached 的方法。从 Couchbase(以前称为 Northscale)下载用于 windows 的 memcached
通常,如果您计划在同一台生产机器上运行 memcached,您会希望在有限的内存中启动它,即定义 memcached 允许使用的最大内存。

c:\Program Files\memcached>memcached.exe -m 128。

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

在您决定扩展memcached 的那一刻,您需要考虑我之前所说的内容。此外,在键值组合中压缩您的值。Web 服务器通常消耗很少的 CPU (2-3%) 使用率,与 CPU 使用率相比,压缩为整个网络带来了很多价值。如果你太在意正常压缩,试试LZO

于 2008-12-09T12:08:59.187 回答
21

我很惊讶这里没有人提到Redis - 它是功能最丰富和最快的(在入门级 Linux 机器上每秒 110,000 SET)键值数据存储之一,具有对字符串的丰富数据结构支持,集、列表、排序集和散列。

虽然 windows 不是官方支持的平台,但它在 windows 下完美运行,所有测试都通过了。我在这里有 Windows 构建(使用 Cygwin): https ://github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows

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

于 2010-03-31T18:51:44.563 回答
12

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

如果我必须再做一次,如果我致力于留在 Windows 上为我的分布式缓存解决方案,我可能会考虑 Velocity。但它现在正在工作,所以我不会碰它。

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

于 2009-07-11T01:30:23.030 回答
7

我不知道您正在从事的项目是什么,但您可能想看看Microsoft Velocity 项目 从页面:

“Velocity”是一个分布式内存应用程序缓存平台,用于开发可扩展的高性能应用程序。“速度”可用于缓存任何公共语言运行时 (CLR) 对象,并通过简单的 API 提供访问。“速度”的关键方面是分布式缓存性能、可扩展性和可用性。

我看过几个演示,看起来它与 .net 框架的集成非常好。

客户端 API 的问题是,您仍然必须使用 LAMP 堆栈在另一个盒子上运行一个 memcached 实例,最好是您已经注意到的某个地方。使用速度意味着您仍将在同一个堆栈上运行,并且跨 .net 平台的集成更加紧密。

话虽如此,如果您想将velocity用作其他.net应用程序的缓存,您可能会发现自己必须编写自己的API来公开velocity数据以供使用。

于 2008-12-09T02:50:01.577 回答
6

Velocity 管理起来有点复杂,但它比 memcached 强大得多。我不是反memcached,一点也没有,这很棒。但展望未来,纯基于 .NET 的新项目如果不利用 Velocity,即使在其当前未发布状态下也是如此。

于 2008-12-29T17:52:16.797 回答
6

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

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

于 2009-07-11T07:02:39.667 回答
3

客户端 API 的问题是,您仍然必须使用 LAMP 堆栈在另一个盒子上运行一个 memcached 实例,最好是您已经注意到的某个地方。

一点也不真实。运行 Memcached 不需要 LAMP(Linux、Apache、MySQL、PHP)堆栈。我目前更喜欢 memcached 而不是速度,直到速度超出 CTP。我已经玩了一段时间的速度,但发现它太笨拙了。我遵循整个 KISS 的事情,你知道...保持简单。没有什么比缓存更简单了... Get(key)... Put(key, value)... Destroy(Key)。

于 2009-02-24T23:19:51.843 回答
2

作为上面提到的 Velocity 的附录,这是由 Microsoft 作为 AppFabric 的一部分发布的更多细节在这里。

在 StackOverflow 上查看涉及 AppFabric 和缓存的各种问题。

于 2011-06-09T02:51:10.197 回答
1

我知道我在这里聚会有点晚了,而且已经有很多好的答案了。

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

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

Membase 下载

如果您不想要 Membase 中的任何额外功能,则同一页面仅具有用于 Memcached 的 Windows 安装。

于 2011-09-23T17:17:32.720 回答
1

请按照下面提到的链接查看此问题的解决方案。

我可以在 Windows 环境中实现 memcached 以供生产使用。

http://www.codeproject.com/Articles/96698/Implementing-Distributed-Caching-using-Memcached http://www.deanhume.com/Home/BlogPost/object-caching----net-4/37 http ://latebound.blogspot.com/2008/10/using-memcached-from-c.html

于 2012-08-16T11:36:41.023 回答
0

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

于 2012-01-13T15:30:20.880 回答