转载请注明来源: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脚本自动迁移

memcached 测试代码的更多相关文章

  1. .NET单元测试的艺术-3.测试代码

    开篇:上一篇我们学习单元测试和核心技术:存根.模拟对象和隔离框架,它们是我们进行高质量单元测试的技术基础.本篇会集中在管理和组织单元测试的技术,以及如何确保在真实项目中进行高质量的单元测试. 系列目录 ...

  2. mysql锁 实战测试代码

    存储引擎 支持的锁定 MyISAM 表级锁 MEMORY 表级锁 InnoDB 行级锁 BDB 页面锁 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低.行级锁:开销 ...

  3. 使用Microsoft Fakes隔离测试代码

    在单元测试(Unit Test)中我们遇到的问题之一是:假如被测试组件(类或项目)为A,组件A依赖于组件B,那么在组件A的单元测试ATest中测试A时,也需要依赖于B,在B发生改动后,就可能影响到A的 ...

  4. iOS开发:XCTest单元测试(附上一个单例的测试代码)

    测试驱动开发并不是一个很新鲜的概念了.在我最开始学习程序编写时,最喜欢干的事情就是编写一段代码,然后运行观察结果是否正确.我所学习第一门语言是c语言,用的最多的是在算法设计上,那时候最常做的事情就是编 ...

  5. 在内核中异步请求设备固件firmware的测试代码

    在内核中异步请求设备固件firmware的测试代码 static void ghost_load_firmware_callback(const struct firmware *fw, void * ...

  6. x264测试代码

    建立一个工程,将头文件,库文件加载到工程,测试代码如下:#include <iostream>#include <string>#include "stdint.h& ...

  7. Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)

    MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...

  8. Git合并开发代码分支到测试代码分支

    ——转载请注明出自天外归云的博客园 用TortoiseGit下载代码到本地 首先需要在本机安装好TortoiseGit.然后在随便哪个路径下比如D盘,右键“Git Clone”: 然后URL处选择项目 ...

  9. mvn编写主代码与测试代码

    maven编写主代码与测试代码 3.2 编写主代码 项目主代码和测试代码不同,项目的主代码会被打包到最终的构件中(比如jar),而测试代码只在运行测试时用到,不会被打包.默认情况下,Maven假设项目 ...

随机推荐

  1. vim 个性化设置

    vim 编辑器安装 yum install vim vim个性化设置 vim ~/.vimrc 复制以下代码 关闭vim一致性原则 set nocompatible 显示行号 set number 设 ...

  2. String 既然能做性能调优,我直呼内行

    码哥,String 还能优化啥?你是不是框我? 莫慌,今天给大家见识一下不一样的 String,从根上拿捏直达 G 点. 并且码哥分享一个例子:通过性能调优我们能实现百兆内存轻松存储几十 G 数据. ...

  3. 我踩过的Django的坑

    把自己在使用Django过程中吃过的亏 踩过的坑 记录一下 1. unique_together传的是元组 正确:unique_together = (('app_id', 'module_id', ...

  4. Python_jsonPath模块的使用

    jsonpath简介 如果有一个多层嵌套的复杂字典,想要根据key批量提取value,还是比较繁琐的.jsonPath模块就能解决这个痛点,接下来我们来学习一下jsonpath模块. 因为jsonpa ...

  5. Zabbix监控报警Lack of free swap space on Zabbix server解决办法

    故障描述: Lack of free swap space on Zabbix server 故障原因: 情况一:云主机:因为Zabbix监控没有考虑虚拟主机的swap分区情况. 情况二:物理主机:说 ...

  6. vue中动画的使用

    不要在router-view的外层使用动画!不要在router-view的外层使用动画!不要在router-view的外层使用动画! 重要的事情说三遍,在app.vue中自以为奇思妙想(实际是脑残)在 ...

  7. 攻防世界-进阶-[re1-100]

    一.收集程序信息 64位的ELF文件,没有壳 二.放入IDA 使用64位IDA打开文件,先进行静态分析查看伪代码,进入main函数 通过这段可以得知输入的内容存储到了input中(这里我将bufwri ...

  8. 利用Spring AOP切面对用户访问进行监控

    开发系统时往往需要考虑记录用户访问系统查询了那些数据.进行了什么操作,尤其是访问重要的数据和执行重要的操作的时候将数记录下来尤显的有意义.有了这些用户行为数据,事后可以以用户为条件对用户在系统的访问和 ...

  9. 2.16图论专题PB

    超神建图技巧合集 CF1368G 每个骨牌变成让空位移动的至多两条有向边,证明图中无环,形成森林. 然后黑白染色,两类森林互不影响.转为每次标记 A 类一棵子树与 B 类一棵子树形成的所有点对. 再转 ...

  10. Android官方文档翻译 十六 4.Managing the Activity Lifecycle

    Managing the Activity Lifecycle 管理activity的生命周期 Dependencies and prerequisites 依赖关系和先决条件 How to crea ...