Memcached的简单使用
来源:互联网 发布:宁波最新房价走势知乎 编辑:程序博客网 时间:2024/05/22 13:39
Memcached的使用
启动和关闭memcached
/usr/local/memcached/bin/memcached -d -m 1024 -u root -p 11211 -c 128 -P /tmp/memcached.pid
关闭Memcached
kill -9 `cat /tmp/memcached.pid`
telnet Memcached
(1)开放11211端口
sudo vi /etc/sysconfig/iptables然后添加下面一行,yy复制一行,p粘贴
-A INPUT -m state --state NEW -m tcp -p tcp --dport 11211 -j ACCEPT
重启
service iptables restart iptables -L
1. telnet 127.0.0.1 11211 2. stats 3. quit 那么你可以在1之后进行数据的操作,3.quit是退出
C++中想要调用memcached库
这是生成memcached的库,其中这里面封装了memcached的接口,我们只需要调用就行了
在memcached文件夹中
BUILD文件:cc_library( name = 'memcachedMgr', srcs = [ 'MemcachedFactory.cpp', 'MemcachedDriver.cpp', ], optimize = [ 'O0', ],incs = [ '.','..',], extra_cppflags = [ '-g','-fPIC', '-std=gnu++11', ], deps = [ '//src/util:util','//src/comm:comm','//thirdparty/boost:boost_thread','//thirdparty/boost:boost_system','//thirdparty/libmemcached-1.0.18:memcached', ],extra_linkflags = ['-L/usr/lib64/', ], export_incs = ['.','..', ], link_all_symbols=False,)
所以你需要把自己的服务的BUIlD文件中的二进制文件导入这个库
这样你可以使用库里面的函数了,记得包含相关的头文件
读取配置文件
你可以将里面的内容添加到你定义的服务的配置文件中,其实就是你读取连接信息(这里需要注意服务端的配置文件要放在服务端运行的目录中)
[MemcachedGeneral]
MemcachedCount=1
[Memcached1]
MemcachedName=test
Host=127.0.0.1
Port=11211//主要端口是你开放的端口
Block=0
读取是在verifycodemain.cpp中实现的,你要添加一下语句加载
// 连接管理
server::mc::MEMCACHED_FACTORY::instance().loadConfig(sConfFile);
之后我们看看数据的读写int VerifyCodeServiceImpl_PB :: AddVerifyCode( const unsigned int uid ,const verifycode::VerifyCodeReq & objReq ,verifycode::VerifyCodeResp & objResp ){objResp.set_uid(uid); stringstream stream;//将int转为stringstream << objReq.uid();string strKey = stream.str();string strSetValue = objReq.code();printf("the key is %s,the value is %s\n", strKey.c_str(),strSetValue.c_str()); static string memName = "test"; // 配置文件中的memcache实例对应的名字一致// 获取mc 操作接口server::mc::Memcached* pMem = server::mc::MEMCACHED_FACTORY::instance().getMemcached(memName);if (pMem == NULL){logErr("get mc wrong");}bool bOk = pMem->mcSet(strKey, strSetValue,60);//设置数据if (!bOk){objResp.set_result(false);printf("Set:%s Value:%s fail\n", strKey.c_str(), strSetValue.c_str());}else {objResp.set_result(true);printf("Set:%s Value:%s success\n", strKey.c_str(), strSetValue.c_str());}return 0;} int VerifyCodeServiceImpl_PB::CheckVerifyCode(const unsigned int uid,const verifycode::InputCode & objReq,verifycode::InputCheck & objResp){objResp.set_uid(uid); static string memName = "test";// 获取mc 操作接口server::mc::Memcached* pMem = server::mc::MEMCACHED_FACTORY::instance().getMemcached(memName);if (pMem == NULL){logErr("get mc wrong");}stringstream stream;stream << objReq.uid();std::string strKey = stream.str(); std::string strGetValue;bool bOk = pMem->mcGet(strKey, strGetValue);//获取数据if (bOk){printf(" Get:%s Value:%s success\n", strKey.c_str(), strGetValue.c_str());}else{printf("Get:%s fail \n", strKey.c_str());objResp.set_ischeck(false);return -1;}if (!strcasecmp(objReq.incode().c_str(), strGetValue.c_str())){objResp.set_ischeck(true);return 0;}else objResp.set_ischeck(false);objResp.set_uid(uid);return 0;}
使用序列化和反序列化
verifycode::AddVerifyCode addcode;int tNow = time(NULL);addcode.set_code(strSetValue);addcode.set_ts(tNow);std::string codewithtime;addcode.SerializeToString(&codewithtime); std::string strGetValue;bool bOk = pMem->mcGet(strKey,strGetValue);verifycode::AddVerifyCode getcode;getcode.ParseFromString(strGetValue);
0 0
- Memcached的简单使用
- memcached简单的使用教程
- memcached简单的使用教程
- memcached简单的使用教程
- memcached简单的使用教程
- Memcached的简单使用实例
- Memcached介绍及简单的使用
- memcached简单的使用教程(转载)
- memcached 的简单使用
- 3.1.4 Memcached的简单使用过程
- Simple-Spring-Memcached(SSM) 的简单使用
- memcached 的安装以及简单使用
- 超简单使用MemCached
- MemCached简单使用
- 超简单使用MemCached
- php 使用memcached简单
- memcached 的简单命令和Java 使用 memcached 的简单例子
- Python-memcached的基本使用(python 中使用memcached简单示例)
- JAVA虚拟机中对象创建
- Recover Binary Search Tree
- 基于压缩感知机的中文分词学习笔记
- laravel的Eloquent关联关系
- UVa679: dropping balls
- Memcached的简单使用
- Tomcat 安装及其单机多实例部署
- laravel的Eloquent其他笔记
- TypeError: POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type s
- Android源码设计模式解析与实战
- Caffe-python interface 学习|网络训练、部署、测试
- Share the experience of how to debug dead lock
- 在Android so文件的.init、.init_array上和JNI_OnLoad处下断点
- MongoDB数据库未授权访问漏洞及加固