0

我正在使用 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

但我不知道如何实现这个。非常感谢代码片段或参考链接。

提前致谢。

4

1 回答 1

1

转到链接http://docs.libmemcached.org/memcached_behavior.html#memcached_behavior_setlink 您可以看到两种方法来制作它。

第一个
MEMCACHED_BEHAVIOR_DISTRIBUTION
使用它,您可以启用将值分发到服务器的不同方式。默认方法是 MEMACACHED_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);
于 2013-08-28T08:00:26.947 回答