转载请注明来源:https://www.cnblogs.com/hookjc/


  1. #include<stdio.h>
  2. #include <iostream>
  3. #include <string>
  4. #include <map>
  5. #include <libmemcached/memcached.h>
  6. using namespace std;
  7. int main()
  8. {
  9. char szIp[] = "127.0.0.1";
  10. int iPort = 11211;
  11. memcached_st  *pstMCache = memcached_create(NULL);
  12. int iResult = memcached_server_add(pstMCache, szIp, iPort); //支持多台cache的分布式
  13. //使用二进制协议传输
  14. iResult = memcached_behavior_set(pstMCache, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1);
  15. if (iResult != MEMCACHED_SUCCESS)
  16. {
  17. printf("memcached_server_add fail %s:%d", szIp, iPort);
  18. return -1;
  19. }
  20. //使用Consistent hashing算法将key分配到不同机器的不同位置
  21. iResult = memcached_behavior_set(pstMCache, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED, 1);
  22. if (iResult != MEMCACHED_SUCCESS)
  23. {
  24. printf("[%s]Error:memcached_behavior_set MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED fail", __FUNCTION__);
  25. return -2;
  26. }
  27. //使用NO-BLOCK,防止memcache倒掉时挂死
  28. iResult = memcached_behavior_set(pstMCache,MEMCACHED_BEHAVIOR_NO_BLOCK, 1);
  29. if (iResult != MEMCACHED_SUCCESS)
  30. {
  31. printf("[%s]Error:memcached_behavior_set MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED fail", __FUNCTION__);
  32. return -3;
  33. }
  34. memcached_return rc;
  35. string key = "10000";
  36. string val = "测试内容1";
  37. rc = memcached_set(pstMCache, key.c_str(), key.size(), val.c_str(), val.size(), 0, 0);
  38. if (rc == MEMCACHED_SUCCESS)
  39. {   //set成功,进行get
  40. unsigned int flags = 0;
  41. char *mc_val = NULL;
  42. size_t val_len = 0;
  43. mc_val = memcached_get(pstMCache, key.c_str(), key.size(), &val_len, &flags, &rc);
  44. if (rc == MEMCACHED_SUCCESS)
  45. {
  46. printf("buffer:%s|len:%Zd|cas:%ld\n", mc_val, val_len, pstMCache->result.item_cas);
  47. if ( mc_val != NULL ){
  48. free(mc_val);
  49. mc_val = NULL;
  50. }
  51. }
  52. else
  53. {
  54. if ( mc_val != NULL ){
  55. free(mc_val);
  56. mc_val = NULL;
  57. }
  58. string  err = memcached_strerror(pstMCache, rc);
  59. printf("err:%s\n", err.c_str());
  60. return -4;
  61. }
  62. string val1 = "测试内容2";
  63. //做了并发容错的memcached_cas  写操作,服务器维持了一个cas序列号,每次调用memcached_cas时,会判断之前get出来的cas是否发生了变化,变化了的话,说明已经被其他程序给修改了
  64. rc= memcached_cas(pstMCache, key.c_str(), key.size(), val1.c_str(), val1.size(),0, 0, pstMCache->result.item_cas/*这个值是唯一序列*/);
  65. if (rc == MEMCACHED_SUCCESS)
  66. {
  67. printf("rc:%d\n", rc);
  68. }
  69. else
  70. {
  71. string  err = memcached_strerror(pstMCache, rc);
  72. printf("err:%s\n", err.c_str());
  73. }
  74. mc_val = memcached_get(pstMCache, key.c_str(), key.size(), &val_len, &flags, &rc);
  75. if (rc == MEMCACHED_SUCCESS)
  76. {
  77. printf("buffer:%s|len:%Zd\n", mc_val, val_len);
  78. }
  79. else
  80. {
  81. string  err = memcached_strerror(pstMCache, rc);
  82. printf("err:%s\n", err.c_str());
  83. return -4;
  84. }
  85. }
  86. else
  87. {
  88. string  err = memcached_strerror(pstMCache, rc);
  89. printf("err:%s\n", err.c_str());
  90. return -5;
  91. }
  92. return 0;
  93. }

来源:python脚本自动迁移

最新文章

  1. mac osx 上面部署Django项目 apache+mysql+mod_wsgi
  2. 理解Cookie和Session机制(转)
  3. Linux搭建apache +PHP(CentOS系统)
  4. Guava学习笔记:Guava新增集合类型-Multimap
  5. 使用chrome查看网页上效果的实现方式
  6. csdn的资源使用
  7. 《Linux内核设计与实现》读书笔记(十三)- 虚拟文件系统
  8. Gradle Goodness: Continue Build Even with Failed Tasks
  9. ipc$漏洞利用实例
  10. (转)教你如何使用php session
  11. POJ2002 Squares(枚举)
  12. 多线程随笔二(Task)
  13. BZOJ 1875: [SDOI2009]HH去散步(矩阵乘法)
  14. Struts2学习---简单的数据校验、访问Web元素
  15. ASP.NET Core中使用自定义MVC过滤器属性的依赖注入
  16. 记使用aliyun-log-logback-appender 报错no applicable action for [encoder], current ElementPath is [[configuration][appender][encoder]]
  17. 第五章:Realm
  18. ARM指令集详解
  19. windows10系统安装Oralce11g时遇到INS-13001环境不满足最低要求
  20. 使用rar把程序打包成一个exe

热门文章

  1. Java EE数据持久化框架 • 【第2章 MyBatis实现DML操作】
  2. MySQL高级查询与编程笔记 • 【第5章 常见数据库对象】
  3. 图解MySQL:count(*) 、count(1) 、count(主键字段)、count(字段)哪个性能最好?
  4. Gitlab如何进行备份恢复与迁移?
  5. Java基础复习到此结束,统一把源码放到GitHub仓库了,响应开源精神
  6. Java 递归 常见24道题目 总结
  7. centos7 安装zabbix3.0 安装zabbix4.0 yum安装zabbix 国内源安装zabbix 阿里云服务器安装zabbix
  8. js获取相邻节点的value值
  9. 【PTA】5-2 下列程序读入时间数值,将其加1秒后输出,时间格式为:hh: mm: ss,即“小时:分钟:秒”,当小时等于24小时,置为0。
  10. Linux防止文件被误删除或修改