focus on linux, c/c++, lua

动手搭建memcached环境

上一篇文章提到了关于memcached在项目中的一些思考,在自己微创新之前,自己先动手做个试验,这里给个汇总。
第一步:安装memcached服务器
因为memcached要用到libevent模块,所以在这之前应该先安装libevent。
sudo apt-get install libevent-devel
然后下载memcached服务器,我装的是最新的1.4.0版本
$ wget http://www.danga.com/memcached/dist/memcached-1.4.0.tar.gz
$ tar zxf memcached-1.4.0.tar.gz
$ cd memcached-1.4.0
$ ./configure
$ make
$ sudo make install
默认情况下memcached安装到/usr/local/bin下。
然后到/usr/local/bin的目录下启动memcached服务器,用控制台的方式启动,方便观察log。
$ /usr/local/bin/memcached -p 11211 -m 64m -vv
至此memcached的服务器已经启动,如果你想在项目用memcached就需要用到memcached提供的
客户端api,我最开始是用的站内偶像达人Kevin Lynx 写的一个轻型客户端,支持windows版本。
在这里可以找到。后来我还是去官方下载了一个libmemcached
第二步:安装libmemcached
$ wget wget http://launchpad.net/libmemcached/1.0/1.0.2/+download/libmemcached-1.0.2.tar.gz
$ tar zxf libmemcached-1.0.2.tar.gz
$ cd libmemcached-1.0.2
$ ./configure
$ make
$ sudo make install
有的网友提到这里configure时memcached服务器路径指向问题,有的用软连接解决,这里我们的memcached
已经安装到/usr/local的路径下,所以不用担心,不出意外,到这里是没有什么问题的。
至此,libmemcached已经安装完成,到/usr/local/bin下面可以看到一堆文件,我只关心我需要的两个,其他的也没深入看。到/usr/local/include下面也能看到libmemcached提供的头文件,so文件也已经生成,但是需要自己手工加载一遍。
$ sudo ldconfig -v
就能看到libmemcached的so文件加载成功了。
接下来,我们就要写简单的代码测试了,测试的代码很简单,就是官方的测试代码,稍作了修改,有错误的地方请指正下,毕竟memcached也不是新鲜的技术了。
#include <stdio.h>
#include 
<stdlib.h>
#include 
<libmemcached/memcached.h>

int main()
{  
  memcached_st 
*memc;
  uint32_t flags;
  memcached_return rc;
  memcached_server_st 
*servers;
  memc
= memcached_create(NULL);
  servers
= memcached_servers_parse("127.0.0.1:11211");
  memcached_server_push(memc, servers);
  memcached_server_list_free(servers);
  memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 
0);
  
char* result_str;
  
const char* pkey = "TestSet";
  
//const char* pkey = "this is a key"; /*wrong!!! no space should appear in the key*/
  int result_str_length;
  result_str
= memcached_get(memc, pkey, strlen(pkey),
  
&result_str_length, &flags,  &rc);
  
if (rc == MEMCACHED_SUCCESS)
  
{
     printf(
"%s\n", result_str);
     free(result_str);
  }

  
else
  
{
      
// insert into the memcached;
     printf("we should insert the data into cache\n");
     
char* pdata = "this is a data";
     rc 
= memcached_set(memc, pkey, strlen(pkey),
     pdata, strlen(pdata), 
00);
  }

  memcached_free(memc);

  
return 0;
}
其中遇到了一个小插曲就是测试时随便写了一个key 如上,
key的字符串中带了空格,后来发现服务器报error,查了下协议
the key must not include control characters or whitespace.
空格去掉就好了。
然后是编译连接
$ gcc -g test.c -o test -lmemcached
貌似g++编译的时候 有类型转换错误,暂时先不管gcc可以通过。
运行,然后去服务器上看调试信息,数据都正常无误。
打完收工!

posted on 2012-01-09 13:42 zuhd 阅读(2384) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理