libmemcached 分布式支持接口如何正确使用
巴山独钓 2011-12-31 05:36:34
使用libmemcached C/C++库简单实验了一下,发现开启2个或多个memcached server,server正常时set和get等都正常,但是其中存在1个或多个down掉后,set和get数据时,一些会失败(这些会映射到down掉的server上)。
正常情况应该是:某些server down后,这时get肯定unhit,但是set应该能够孩成功插入正常的memcached server。
不知道具体需要怎么使用API,才能够支持某些server down后,继续set时,也能够成功。
查阅libmemcached C/C++使用接口的文档,发现很少,即使是官方文档(Document)也没有涉及,libmemcached源码看了一下午,也没瞧出如何正确使用,不知道哪位有使用的经历,或是一些好的例子,谢谢!
测试代码很简单,就是通常使用的方式:
memcached_st *memc;
memcached_return rc;
memcached_server_st *servers;
memc = memcached_create(NULL);
memcached_behavior_set(memc,MEMCACHED_BEHAVIOR_DISTRIBUTION,MEMCACHED_DISTRIBUTIO\
N_CONSISTENT);
servers = memcached_server_list_append(NULL, "localhost", 11211, &rc);
servers = memcached_server_list_append(servers, "localhost", 11212, &rc);
rc = memcached_server_push(memc, servers);
memcached_server_free(servers);
// 这句是我看源码添加的,不行
memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS, 1) ;
// 之后就是set和get了
...
memcached_set(memc, ...) ;
memcached_get(memc, ...) ;
...
// 最后释放
memcached_free(memc);