使用libmemcached的c++客户端
2016-02-26 16:06
393 查看
需要实现安装memcached, 以及libevent,本次我使用的libmemcached是 libmemcached-0.31.tar.gz 版本, 更高的版本编译出现一系列问题,暂且用这个。
解压完之后,在解压后的目录执行
.configure
make
make install
注意,安装完之后,libmemcached.so文件默认是安装在了 /usr/local/lib/ 目录下,但是gcc/g++在寻找动态链接库的时候,是从/usr/lib/ 目录找的,所以make install 之后,还需要
cp /usr/local/lib/libmemcached.so* /usr/lib/
全部复制到/usr/lib 目录,至于其他人说的修改环境变量、建立链接文件之类的,不如上面这个简单直接,虽然粗暴了点,但简单有效。
下面是一个客户端测试,
头文件 MemCachedClient.h
cc 文件 test.cc
为了方便编写了Makefile文件
注意: 头文件中的Ip地址及端口号,必须修改为自己的memcached服务器的ip及port
解压完之后,在解压后的目录执行
.configure
make
make install
注意,安装完之后,libmemcached.so文件默认是安装在了 /usr/local/lib/ 目录下,但是gcc/g++在寻找动态链接库的时候,是从/usr/lib/ 目录找的,所以make install 之后,还需要
cp /usr/local/lib/libmemcached.so* /usr/lib/
全部复制到/usr/lib 目录,至于其他人说的修改环境变量、建立链接文件之类的,不如上面这个简单直接,虽然粗暴了点,但简单有效。
下面是一个客户端测试,
头文件 MemCachedClient.h
#ifndef MEMCACHEDCLIENT #define MEMCACHEDCLIENT #include <libmemcached/memcached.h> #include<iostream> #include<string.h> #include<time.h> #include <stdlib.h> #include <stdio.h> using std::string; using std::cout; using std::endl; class MemCachedClient { public: ~MemCachedClient() { memcached_free(memc); }; MemCachedClient() { memcached_return rc; memcached_server_st *server = NULL; memc = memcached_create(NULL); server =memcached_server_list_append(server, "127.0.0.1", 11211, &rc); rc=memcached_server_push(memc,server); if (MEMCACHED_SUCCESS != rc) { cout <<"memcached_server_push failed! rc: " << rc << endl; } memcached_server_list_free(server); }; int Insert(const char* key, const char* value,time_t expiration = 3) { if (NULL == key || NULL == value) { return -1; } uint32_t flags = 0; memcached_return rc; rc = memcached_set(memc, key, strlen(key),value, strlen(value), expiration, flags); // insert ok if (MEMCACHED_SUCCESS == rc) { return 1; } else { return 0; } }; string Get(const char* key) { if (NULL == key) { return "no key"; } uint32_t flags = 0; memcached_return rc; size_t value_length; char* value = memcached_get(memc, key, strlen(key), &value_length, &flags, &rc); // get ok if(rc == MEMCACHED_SUCCESS) { return value; } return "no value"; }; private: memcached_st* memc; }; #endif
cc 文件 test.cc
#include<iostream> #include"MemCachedClient.h" using std::cout; using std::endl; int main() { MemCachedClient mc; int result = mc.Insert("mem_key","/view/index?name=Jame"); string get_value = mc.Get("mem_key"); cout << "get_value: " << get_value << endl; return 1; };
为了方便编写了Makefile文件
TARGET = test SOURCE = test.cc MemCachedClient.h CFLAG = -g3 -O0 -lmemcached TARGET: g++ $(CFLAG) $(SOURCE) -o $(TARGET) .phony:clean clean: rm $(TARGET)
注意: 头文件中的Ip地址及端口号,必须修改为自己的memcached服务器的ip及port
相关文章推荐
- memcached单点故障与负载均衡
- memcached性能监控
- 在Windows .NET平台下使用Memcached
- Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作 - Edison Chou
- SpringMVC-Mybatis-Memcached整合案例
- memcached/Redis 区别
- memcached系列
- DBMemcache,这个我喜欢
- 在Linux上安装Memcached服务
- 一个小工具完成对memcached/kt/mongodb/redis的性能监测
- memcached命中率
- Memcache仅仅支持简单数据类型
- Memcached(七)Memcached的并发实例
- Memcached(六)Memcached的并发实例
- Memcached(五)Memcached的并发实例
- Memcached(四)Memcached的CAS协议
- 【转载】Memcache升级版:CouchBase的安装配置与使用说明
- Memcached(三)Memcached配置参数初解
- Memcached(二)Memcached Java API基础之MemcachedClient
- Memcached(一)在Windows上安装和测试memcached