lujiguo115 发表于 2015-9-2 09:36:00

使用libmemcached操作memcached

  
  首先启动memcached
memcached -m 512 -p 11211 -vv
memcached -m 512 -p 11212 -vv
该例分配给 memcached 的可用内存 512M, 监听 11211 端口, 另外一个监听11212端口, 显示详细的运行信息。

使用方法,我将用代码+注释来说明, test.cpp



1 #include <iostream>
2 #include <string>
3 #include <libmemcached/memcached.h>
4
5 using namespace std;
6
7 int main(int argc, char** argv)
8 {
9   memcached_st *memc;
10   memcached_return rc;
11   memcached_server_st *servers;
12   time_t expiration = 0;
13   uint32_tflags;
14   
15   memc = memcached_create(NULL);
16   // 把memcached加入列表, 假如开了两个memcached,如下方法
17   servers = memcached_server_list_append(NULL, "localhost", 11211, &rc);
18   servers = memcached_server_list_append(servers, "localhost", 11212, &rc);
19   rc=memcached_server_push(memc, server);
20   
21   // 使用一致性哈希http://blog.iyunv.com/sparkliang/article/details/5279393
22   // http://stackoverflow.com/questions/16757511/how-to-use-consistent-hashing-in-memcached-c-client/18482345#18482345
23   memcached_return_t rc2 = memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_KETAMA, 1);
24   
25   
26   string key = "keyyy";
27   string value = "123456";
28   size_t value_length = value.length();
29   size_t key_length = key.length();
30   
31   //把数据保存到memcached
32   rc= memcached_set(memc, key.c_str(), key.length(), value.c_str(), value.length(), expiration, flags);
33   
34   
35   //提取数据
36   char* result = memcached_get(memc, key.c_str(), key_length, &value_length, &flags, &rc);
37   if(rc!=MEMCACHED_SUCCESS)
38   {
39         // 如果是结合数据库的话
40         // 此步应该去数据库查询,然后把结果保存一份到memcached
41   }
42   
43   
44   //删除数据
45   rc= memcached_delete(memc,key.c_str(),key_length,expiration);
46   
47   
48   //释放
49   memcached_server_list_free(server);
50   memcached_free(memc);
51   
52   return 0;
53   
54 }
  
g++ test.cpp -lmemcached
页: [1]
查看完整版本: 使用libmemcached操作memcached