Windows 및 .NET에서 Memcached


83

Windows 환경에서 프로덕션 용도로 이미 memcached를 구현 한 사람이 있습니까? 내가 읽은 많은 블로그 때문에 특히 프로덕션 용도로 Windows에서 memcached를 실행하지 않는 것이 좋습니다 (예 : windows에서 memcached 실행) .

그리고 한 가지 더, c # 및 .net 3.5와 함께 사용하기에 좋은 memcached 클라이언트는 무엇입니까? Memcached Providers @ Codeplex , Beitmemcachedmemcached provider @ Sourceforge 와 같은 많은 대안을 찾았습니다.


6
2008 년 블로그 게시물을 가리키고 있습니다. Memcached는 최근 Windows에서 매우 친숙해졌습니다
Dustin

1
더스틴에 +1. 우리는 NorthScale을 사용해 왔으며 멋진 관리자 (웹) UI를 사용하여 상당히 Windows 친화적입니다.
ram

2
@Dustin 및 @ram - 더스틴은, +1하지만이 질문은 2008 년에 질문을 받았다 즐길
저스틴

3
헤. 그게 '08 년이었던 것임에 틀림 없다. 미안합니다. :)
Dustin

답변:


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는 최대 128MB 사용량으로 실행됩니다. memcached가 웹 서버의 모든 메모리를 차지하는 것을 원하지 않습니다.

memcached 를 확장 하기로 결정한 순간 앞서 말한 내용을 고려해야합니다. 또한 키 값 조합에서 값을 압축하십시오. 웹 서버는 일반적으로 CPU 사용량 (2 ~ 3 %)을 거의 사용하지 않으며 압축은 CPU 사용량에 비해 네트워크 전반에 걸쳐 많은 가치를 제공합니다. 일반 압축이 너무 걱정된다면 LZO를 사용해보십시오.


2
답변 해 주셔서 감사합니다. 이것이 제가 찾고있는 것입니다.
Funky81

31
Windows에서 TCO는 어떻게 기하 급수적으로 증가합니까? 라이선스 비용은 컴퓨터 수에 따라 선형 적으로 증가합니다. 그러나 하드웨어 비용, 랙 공간 및 전기, 지원 계약 및 운영자 급여를 고려할 때 솔직히 말해서 Windows의 라이선스 비용은 매우 적습니다.
Greg Beech

23
Cherian의 주장에 반박을 추가하기 위해. Windows에서 호스팅하려는 원동력은 시스템 관리자의 전문 지식 일 수 있습니다. 예를 들어, memcached 상자를 가져 오기 위해 * nix 관리자를 고용 할 자원이없는 소규모 상점은 회사가 이미 잘 알고있는 플랫폼 (예 : Windows)에서 호스팅하면 큰 이점을 얻을 수 있습니다.
Joel Martinez

2
나는 OP가 요청한 것을 실제로 다루지 않기 때문에이 대답을 DV 할 것입니다. 그러나 그는 이것이 그가 찾고있는 것이 구체적이라고 말했습니다.
Chris Marisic

11
실제 질문을 다루지 않기 때문에 반대 투표했습니다. OP의 문제가 해결 되었다면 질문을 다시 작성해야할까요?
sh-beta

21

여기에 아무도 Redis 를 언급하지 않았다는 것이 놀랍습니다. Redis 는 문자열에 대한 풍부한 데이터 구조 지원을 제공하는 가장 기능이 풍부하고 가장 빠른 (초보 레벨 리눅스 박스에서 초당 110,000 SET) 키-값 데이터 저장소 중 하나입니다. 세트, 목록, 정렬 된 세트 및 해시.

Windows는 공식적으로 지원되는 플랫폼은 아니지만 모든 테스트를 통과 한 창에서 완벽하게 실행됩니다. https://github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows에서 사용할 수있는 Windows 빌드 (Cygwin 사용)가 있습니다.

또한 오늘날 사용되는 거의 모든 프로그래밍 언어에 대한 클라이언트 바인딩이 있습니다. https://github.com/ServiceStack/ServiceStack 에서 모든 IOC에 놓을 준비가 된 모든 C # POCO 유형, 트랜잭션 지원 및 스레드 안전 클라이언트 관리자에 대한 기본 API 지원을 통해 풍부한 오픈 소스 C # Redis 클라이언트를 유지 관리합니다 . Redis


12

당시 Velocity가 존재하지 않았기 때문에 저는 제가 근무하는 Skiviez 회사를 위해 Windows에 memcached 포트를 사용했습니다. 주로 동일한 시스템의 여러 작업자 프로세스에 중앙 집중식 캐시를 제공하기 위해서만 존재합니다. 현재 약 18 개월 동안 사용률이 낮은 전자 상거래 사이트 (~ 18,500 조회수 / 일)에서 잘 작동하고 있습니다. 내가 사용한 클라이언트는 iBATIS.NET 의 캐시 공급자로 통합 된 Enyim이었습니다. 그 클라이언트는 충분히 잘 작동하는 것 같습니다. memcached 클라이언트는 시작하기에 그리 복잡하지 않습니다.

다시해야한다면 분산 캐싱 솔루션을 위해 Windows에 남아 있기로 약속했다면 Velocity를 살펴 보았을 것입니다. 하지만 지금은 작동하므로 건드리지 않겠습니다.

(참고 : 그 이후로 Cache*매일 저녁 예약 된 작업에 의해 업데이트되는 데이터베이스의 주요 테이블에 특정 열을 추가하여 캐시에 대한 대부분의 요구를 무효화했습니다 . 이로 인해 초기부터 리소스에 대한 부담이 훨씬 줄어 들었습니다. 캐시 된 결과를 memcached에 보관하여 메모리 가용성에 대한 후속 부담을 데이터베이스에 쿼리하여 CPU 시간을 기록했습니다. 또한 캐시 된 버전의 데이터가 액세스 될 때 코드에서 훨씬 더 명확하게 즉석 버전입니다. 분산 캐시를 사용해야하는 이유가 많을 것 같지만, 한 걸음 물러서서 정말 필요한지 여부에 대해 질문 할 가치가 있습니다.)


Velocity는 이제 AppFabric의 일부입니다
Jon

7

작업중인 프로젝트가 무엇인지 모르겠지만 페이지에서 Microsoft Velocity 프로젝트를 살펴보고 싶을 수도 있습니다 .

"Velocity"는 확장 가능한 고성능 응용 프로그램을 개발하기위한 분산 메모리 내 응용 프로그램 캐시 플랫폼입니다. "Velocity"는 모든 CLR (공용 언어 런타임) 개체를 캐시하는 데 사용할 수 있으며 간단한 API를 통해 액세스를 제공합니다. "Velocity"의 주요 측면은 분산 캐시 성능, 확장 성 및 가용성입니다.

몇 가지 데모를 보았는데 .net 프레임 워크와 정말 잘 통합 된 것 같습니다.

클라이언트 API의 문제는 LAMP 스택을 사용하여 언급했듯이 선호하는 다른 상자에서 실행중인 memcached 인스턴스가 여전히 있어야한다는 것입니다. 속도를 사용한다는 것은 여전히 ​​동일한 스택에서 실행 중이며 .net 플랫폼 전체에서 더 긴밀하게 통합된다는 것을 의미합니다.

즉, 속도를 다른 .net 응용 프로그램의 캐시로 사용하려면 자체 API를 작성하여 사용을 위해 속도 데이터를 노출해야 할 수도 있습니다.


내가 아는 한, 속도는 아직 개발 중이기 때문에 다른 대안을 찾으려고 노력합니다. 그리고 그것은 memcached입니다
Funky81

잠시 읽은 후 속도 설치 및 유지 관리는 memcached만큼 쉽지 않습니다
Funky81

3
LAMP 스택을 사용하십니까? memcached를 실행하기 위해 Apache, MySQL 또는 PHP가 필요하지 않으므로 "Linux 사용"을 의미하지 마십시오.
GateKiller

6

Velocity는 관리에 조금 더 관여하지만 memcached보다 훨씬 강력합니다. 나는 anti-memcached가 아니며, 조금도 좋지 않습니다. 그러나 앞으로 순수한 .NET 기반의 새로운 프로젝트는 현재 미발매 상태에서도 Velocity를 활용하지 않는 데 열광합니다.


6

SharedCache를 살펴 보십시오 . 오픈 소스이며 사용하기 쉽고 매우 안정적입니다.

고성능, 분산 메모리 개체 캐싱 시스템, 본질적으로 일반적이지만 데이터베이스 부하를 줄여 동적 웹 및 / 또는 응용 프로그램 확보 속도를 높이기위한 것입니다. http://www.sharedcache.com 에서 우리를 방문하는 것을 잊지 마십시오


3

클라이언트 API의 문제는 LAMP 스택을 사용하여 언급했듯이 선호하는 다른 상자에서 실행중인 memcached 인스턴스가 여전히 있어야한다는 것입니다.

전혀 사실이 아닙니다. LAMP (Linux, Apache, MySQL, PHP) 스택은 Memcached를 실행하는 데 필요하지 않습니다. 현재 속도가 CTP를 벗어날 때까지 속도보다 memcached를 선호합니다. 나는 약간의 속도로 놀았지만 너무 다루기 어렵다는 것을 알았습니다. 나는 그 모든 KISS를 따른다. 알다시피 .. 단순하게 유지하라. 캐싱보다 간단한 것은 없습니다 ... Get (key) ... Put (key, value) ... Destroy (Key).



1

여기 파티에 조금 늦었다는 것을 알고 있으며 이미 많은 좋은 답변이 있습니다.

우리는 Windows Server에서 Membase를 성공적으로 사용했습니다. Memcached와 100 % 호환되며 멋진 GUI 설치 프로그램과 웹 구성 서버가 있습니다. 관리가 매우 쉽습니다.

이 스레드의 범위를 벗어나지 만 살펴볼 가치가있는 다른 NoSQL 기능도 포함되어 있습니다. 개발, 테스트 및 (제한된) 프로덕션 서버에 대한 무료 라이센스가 있습니다.

Membase 다운로드

Membase의 추가 기능을 원하지 않는 경우 동일한 페이지에 Memcached 용 Windows 설치 만 있습니다.



0

Windows에서 memcached 클라이언트를 실행하는 데 관심이 있다면 작업을 수행 할 수있는 두 개의 추가 오픈 소스 서버가 있습니다. 둘 다 표준 memcached 서버 프로토콜을 구현하고 Java로 작성되어 Windows에서 실행됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.