2012-11-05 2 views
1

여러 서버에 캐시를 배포하려고합니다. Memcached를 2 대의 Linux 서버에 설치했습니다. .Net 클라이언트 라이브러리를 사용하여 해당 서버의 캐시를 조작합니다.여러 서버간에 memchached 방식으로 캐시를 배포하는 방법은 무엇입니까?

항상 구성의 첫 번째 서버에 값을 저장합니다. 서버의 순서를 변경하려고 시도했지만 목록의 첫 번째에만 저장합니다.

퍼티를 사용하여 서버에 개체가 있는지 확인합니다.

질문은 다음과 같습니다.

두 서버에 동시에 개체를 저장하는 방법은 무엇입니까?

나는이 객체가 구성 파일 나는 클라이언트 라이브러리에서 그것을 할 수있는 방법

에서 모든 서버에 저장되어 있는지 확인하려면

? 여기

내 코드의 예는 다음과 같습니다

static void Main(string[] args) 
{ 
    var mc = new MemcachedClient(); 
    mc.FlushAll(); 
    mc.Store(StoreMode.Add, "key1", "some information");    
    Console.WriteLine(mc.Get("key1")); 
} 

및 구성

<enyim.com> 
    <memcached> 
     <servers> 
     <add address="20.23.24.105" port="11211"/> 
     <add address="20.23.24.106" port="11211"/> 
     </servers> 
     <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:10:00" deadTimeout="00:02:00"/> 
    </memcached> 
    </enyim.com> 

답변

2

이없는 방법 Memcached가 있기 때문에 나는 .NET 클라이언트를 사용하여이 작업을 수행하는 것이 가능하다는 것을 생각하지 않는다 일하기로되어있다. 내부적으로 클라이언트는 각 키를 하나의 서버에만 해시합니다. 서버가 다운되면 클라이언트는 미래의 키를 해싱 할 때이를 고려합니다. 이 문제를 해결하는 한 가지 방법은 각 서버마다 별도의 세트를 작성하는 것입니다. 이렇게하려면 두 개의 클라이언트 (하나는 각 서버에 연결된 클라이언트)를 만들고 두 번 요청을 보내야합니다. .NET 클라이언트가 비동기 세트를 제공하면 대기 시간을 두 집합 연산 중 가장 길게 만 수행하면됩니다.