上一篇文章提到了關(guān)于memcached在項目中的一些思考,在自己微創(chuàng)新之前,自己先動手做個試驗,這里給個匯總。
第一步:安裝memcached服務(wù)器
因為memcached要用到libevent模塊,所以在這之前應該先安裝libevent。
sudo apt-get install libevent-devel
然后下載memcached服務(wù)器,我裝的是最新的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服務(wù)器,用控制臺的方式啟動,方便觀察log。
$ /usr/local/bin/memcached -p 11211 -m 64m -vv
至此memcached的服務(wù)器已經(jīng)啟動,如果你想在項目用memcached就需要用到memcached提供的
客戶端api,我最開始是用的站內(nèi)偶像達人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
有的網(wǎng)友提到這里configure時memcached服務(wù)器路徑指向問題,有的用軟連接解決,這里我們的memcached
已經(jīng)安裝到/usr/local的路徑下,所以不用擔心,不出意外,到這里是沒有什么問題的。
至此,libmemcached已經(jīng)安裝完成,到/usr/local/bin下面可以看到一堆文件,我只關(guān)心我需要的兩個,其他的也沒深入看。到/usr/local/include下面也能看到libmemcached提供的頭文件,so文件也已經(jīng)生成,但是需要自己手工加載一遍。
$ sudo ldconfig -v
就能看到libmemcached的so文件加載成功了。
接下來,我們就要寫簡單的代碼測試了,測試的代碼很簡單,就是官方的測試代碼,稍作了修改,有錯誤的地方請指正下,畢竟memcached也不是新鮮的技術(shù)了。
#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), 0, 0);
}
memcached_free(memc);

return 0;
}其中遇到了一個小插曲就是測試時隨便寫了一個key 如上,
key的字符串中帶了空格,后來發(fā)現(xiàn)服務(wù)器報error,查了下協(xié)議
the key must not include control characters or whitespace.
空格去掉就好了。
然后是編譯連接
$ gcc -g test.c -o test -lmemcached
貌似g++編譯的時候 有類型轉(zhuǎn)換錯誤,暫時先不管gcc可以通過。
運行,然后去服務(wù)器上看調(diào)試信息,數(shù)據(jù)都正常無誤。
打完收工!