Memcached的简单使用
2017-01-08 14:01
274 查看
Memcached的使用
启动和关闭memcached
关闭Memcached
telnet Memcached
(1)开放11211端口
重启
C++中想要调用memcached库
这是生成memcached的库,其中这里面封装了memcached的接口,我们只需要调用就行了
在memcached文件夹中
所以你需要把自己的服务的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);
使用序列化和反序列化
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);
启动和关闭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::VerifyC 4000 odeReq & objReq ,verifycode::VerifyCodeResp & objResp ) { objResp.set_uid(uid); stringstream stream;//将int转为string stream << 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);
相关文章推荐
- Spring集成memcached的详细介绍
- Linux操作系统安装memcached
- memcached在项目中的应用
- Memcached 基本配置
- memcached内存机制
- memcache/memcached安装教程并应用Tinkphp3.2
- redis与memcached区别
- memcache 和 memcached的php拓展(基于centos 7)
- Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解
- memcache启动和关闭以及启动参数说明
- centos安装libevent+memcached服务
- memcache基础知识
- Redis和Memcached的区别---查询资料整理
- memcached协议及命令详解
- memcached内存管理机制详解
- telnet如何岁memcached进行操作。
- Redis在传统web工程中替代memcached方案实践
- PHP之Memcache缓存详解
- Memcache安装和配置
- 关于Memcached一致性hash的探究