2013-05-26 2 views
0

libmemcached c 클라이언트를 사용하여 memcache 값을 얻고 있습니다.memcached c 클라이언트에서 일관된 해시를 사용하는 방법은 무엇입니까?

memcached_server_st *servers = NULL; 
    memcached_st *memc; 
    memcached_return rc; 
    char *key= "keystring"; 
    char *value= "keyvalue"; 

// memcached_server_st *memcached_servers_parse (char *server_strings); 
    memc= memcached_create(NULL); 

    servers= memcached_server_list_append(servers, "localhost", 5555, &rc); 
    servers= memcached_server_list_append(servers, "localhost", 5566, &rc); 
    rc= memcached_server_push(memc, servers); 

    if (rc == MEMCACHED_SUCCESS) 
    fprintf(stderr,"Added server successfully\n"); 
    else 
    fprintf(stderr,"Couldn't add server: %s\n",memcached_strerror(memc, rc)); 

    rc= memcached_set(memc, key, strlen(key), value, strlen(value), (time_t)0, (uint32_t)0); 

    if (rc == MEMCACHED_SUCCESS) 
    fprintf(stderr,"Key stored successfully\n"); 
    else 
    fprintf(stderr,"Couldn't store key: %s\n",memcached_strerror(memc, rc)); 

    return 0; 

나는 세트에 대한 일관된 해싱 알고리즘을 사용하여 키를 싶어. http://docs.libmemcached.org/memcached_behavior.html#memcached_behavior_setlink

그러나 this.code 코드 또는 참조 링크를 구현하는 방법을 모르겠다.

미리 감사드립니다.

답변

1

로 이동 http://docs.libmemcached.org/memcached_behavior.html#memcached_behavior_setlink 두 가지 방법으로 확인할 수 있습니다. 이것은 당신이 서버에 값을 분배의 다른 수단을 사용할 수 있습니다 사용

첫 번째
MEMCACHED_BEHAVIOR_DISTRIBUTION
. 기본 방법은 MEMCACHED_DISTRIBUTION_MODULA입니다. MEMCACHED_DISTRIBUTION_CONSISTENT를 설정하여 일관된 해싱을 사용할 수 있습니다. 일관된 해싱은보다 나은 배포를 제공하고 캐시 손실을 최소화하면서 서버를 클러스터에 추가 할 수 있습니다. 현재 MEMCACHED_DISTRIBUTION_CONSISTENT는 MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA 값의 별명입니다.

초 하나
MEMCACHED_BEHAVIOR_KETAMA
는 MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA에 기본 분포와 MEMCACHED_HASH_MD5에 해시를 설정합니다.

memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_KETAMA, 1);