memcached 测试代码
2024-09-07 15:42:46
转载请注明来源:https://www.cnblogs.com/hookjc/
- #include<stdio.h>
- #include <iostream>
- #include <string>
- #include <map>
- #include <libmemcached/memcached.h>
- using namespace std;
- int main()
- {
- char szIp[] = "127.0.0.1";
- int iPort = 11211;
- memcached_st *pstMCache = memcached_create(NULL);
- int iResult = memcached_server_add(pstMCache, szIp, iPort); //支持多台cache的分布式
- //使用二进制协议传输
- iResult = memcached_behavior_set(pstMCache, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1);
- if (iResult != MEMCACHED_SUCCESS)
- {
- printf("memcached_server_add fail %s:%d", szIp, iPort);
- return -1;
- }
- //使用Consistent hashing算法将key分配到不同机器的不同位置
- iResult = memcached_behavior_set(pstMCache, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED, 1);
- if (iResult != MEMCACHED_SUCCESS)
- {
- printf("[%s]Error:memcached_behavior_set MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED fail", __FUNCTION__);
- return -2;
- }
- //使用NO-BLOCK,防止memcache倒掉时挂死
- iResult = memcached_behavior_set(pstMCache,MEMCACHED_BEHAVIOR_NO_BLOCK, 1);
- if (iResult != MEMCACHED_SUCCESS)
- {
- printf("[%s]Error:memcached_behavior_set MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED fail", __FUNCTION__);
- return -3;
- }
- memcached_return rc;
- string key = "10000";
- string val = "测试内容1";
- rc = memcached_set(pstMCache, key.c_str(), key.size(), val.c_str(), val.size(), 0, 0);
- if (rc == MEMCACHED_SUCCESS)
- { //set成功,进行get
- unsigned int flags = 0;
- char *mc_val = NULL;
- size_t val_len = 0;
- mc_val = memcached_get(pstMCache, key.c_str(), key.size(), &val_len, &flags, &rc);
- if (rc == MEMCACHED_SUCCESS)
- {
- printf("buffer:%s|len:%Zd|cas:%ld\n", mc_val, val_len, pstMCache->result.item_cas);
- if ( mc_val != NULL ){
- free(mc_val);
- mc_val = NULL;
- }
- }
- else
- {
- if ( mc_val != NULL ){
- free(mc_val);
- mc_val = NULL;
- }
- string err = memcached_strerror(pstMCache, rc);
- printf("err:%s\n", err.c_str());
- return -4;
- }
- string val1 = "测试内容2";
- //做了并发容错的memcached_cas 写操作,服务器维持了一个cas序列号,每次调用memcached_cas时,会判断之前get出来的cas是否发生了变化,变化了的话,说明已经被其他程序给修改了
- rc= memcached_cas(pstMCache, key.c_str(), key.size(), val1.c_str(), val1.size(),0, 0, pstMCache->result.item_cas/*这个值是唯一序列*/);
- if (rc == MEMCACHED_SUCCESS)
- {
- printf("rc:%d\n", rc);
- }
- else
- {
- string err = memcached_strerror(pstMCache, rc);
- printf("err:%s\n", err.c_str());
- }
- mc_val = memcached_get(pstMCache, key.c_str(), key.size(), &val_len, &flags, &rc);
- if (rc == MEMCACHED_SUCCESS)
- {
- printf("buffer:%s|len:%Zd\n", mc_val, val_len);
- }
- else
- {
- string err = memcached_strerror(pstMCache, rc);
- printf("err:%s\n", err.c_str());
- return -4;
- }
- }
- else
- {
- string err = memcached_strerror(pstMCache, rc);
- printf("err:%s\n", err.c_str());
- return -5;
- }
- return 0;
- }
来源:python脚本自动迁移
最新文章
- mac osx 上面部署Django项目 apache+mysql+mod_wsgi
- 理解Cookie和Session机制(转)
- Linux搭建apache +PHP(CentOS系统)
- Guava学习笔记:Guava新增集合类型-Multimap
- 使用chrome查看网页上效果的实现方式
- csdn的资源使用
- 《Linux内核设计与实现》读书笔记(十三)- 虚拟文件系统
- Gradle Goodness: Continue Build Even with Failed Tasks
- ipc$漏洞利用实例
- (转)教你如何使用php session
- POJ2002 Squares(枚举)
- 多线程随笔二(Task)
- BZOJ 1875: [SDOI2009]HH去散步(矩阵乘法)
- Struts2学习---简单的数据校验、访问Web元素
- ASP.NET Core中使用自定义MVC过滤器属性的依赖注入
- 记使用aliyun-log-logback-appender 报错no applicable action for [encoder], current ElementPath is [[configuration][appender][encoder]]
- 第五章:Realm
- ARM指令集详解
- windows10系统安装Oralce11g时遇到INS-13001环境不满足最低要求
- 使用rar把程序打包成一个exe
热门文章
- Java EE数据持久化框架 • 【第2章 MyBatis实现DML操作】
- MySQL高级查询与编程笔记 • 【第5章 常见数据库对象】
- 图解MySQL:count(*) 、count(1) 、count(主键字段)、count(字段)哪个性能最好?
- Gitlab如何进行备份恢复与迁移?
- Java基础复习到此结束,统一把源码放到GitHub仓库了,响应开源精神
- Java 递归 常见24道题目 总结
- centos7 安装zabbix3.0 安装zabbix4.0 yum安装zabbix 国内源安装zabbix 阿里云服务器安装zabbix
- js获取相邻节点的value值
- 【PTA】5-2 下列程序读入时间数值,将其加1秒后输出,时间格式为:hh: mm: ss,即“小时:分钟:秒”,当小时等于24小时,置为0。
- Linux防止文件被误删除或修改