我正在使用libmemcached c客户端进行设置并获取memcache值。
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片段或参考链接非常感谢。
提前致谢。
答案 0 :(得分: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);