亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

Memcached緩存系統的介紹、安裝以及應用方法詳解

2024-09-01 13:47:54
字體:
來源:轉載
供稿:網友

本文實例講述了Memcached緩存系統的介紹、安裝以及應用方法。分享給大家供大家參考,具體如下:

一. memcached 是什么?

memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

memcached是一個高性能的、分布式內存對象緩存系統,應用廣泛。 通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、 提高可擴展性。

它可以應對任意多個連接,使用非阻塞的網絡IO。由于它的工作機制是在內存中開辟一塊空間,然后建立一個HashTable,Memcached自管理這些HashTable。還使用內置的內存塊分配和哈希表算法,確保虛擬內存不會過來搗亂。

Memcached 官方網站:http://www.danga.com/memcached

二. memcached 的安裝:

注:memcached 用到了libevent這個庫用于Socket的處理,所以還需要安裝libevent.官網:http://www.monkey.org/~provos/libevent/

1. 先安裝libevent:

[root@localhost software]# tar zxvf libevent-1.4.11-stable.tar.gz[root@localhost libevent-1.4.11-stable]# ./configure –prefix=/usr[root@localhost libevent-1.4.11-stable]# make[root@localhost libevent-1.4.11-stable]# make install

2. 測試libevent是否安裝成功

[root@localhost libevent-1.4.11-stable]# ls -al /usr/lib | grep libeventlrwxrwxrwx  1 root root    22 07-10 13:10 libevent-1.1a.so.1 -> libevent-1.1a.so.1.0.2-rwxr-xr-x  1 root root  31596 2007-01-07 libevent-1.1a.so.1.0.2lrwxrwxrwx  1 root root    21 07-21 03:33 libevent-1.4.so.2 -> libevent-1.4.so.2.1.3-rwxr-xr-x  1 root root  308088 07-21 03:33 libevent-1.4.so.2.1.3-rw-r--r--  1 root root  394474 07-21 03:33 libevent.alrwxrwxrwx  1 root root    26 07-21 03:33 libevent_core-1.4.so.2 -> libevent_core-1.4.so.2.1.3-rwxr-xr-x  1 root root  109490 07-21 03:33 libevent_core-1.4.so.2.1.3-rw-r--r--  1 root root  148742 07-21 03:33 libevent_core.a-rwxr-xr-x  1 root root   866 07-21 03:33 libevent_core.lalrwxrwxrwx  1 root root    26 07-21 03:33 libevent_core.so -> libevent_core-1.4.so.2.1.3lrwxrwxrwx  1 root root    27 07-21 03:33 libevent_extra-1.4.so.2 -> libevent_extra-1.4.so.2.1.3-rwxr-xr-x  1 root root  246870 07-21 03:33 libevent_extra-1.4.so.2.1.3-rw-r--r--  1 root root  307370 07-21 03:33 libevent_extra.a-rwxr-xr-x  1 root root   873 07-21 03:33 libevent_extra.lalrwxrwxrwx  1 root root    27 07-21 03:33 libevent_extra.so -> libevent_extra-1.4.so.2.1.3-rwxr-xr-x  1 root root   831 07-21 03:33 libevent.lalrwxrwxrwx  1 root root    21 07-21 03:33 libevent.so -> libevent-1.4.so.2.1.3

安裝OK。

3. 安裝memcached,同時需要安裝中指定libevent的安裝位置

[root@localhost software]# tar zxvf memcached-1.4.0.tar.gz[root@localhost memcached-1.4.0]# ./configure –with-libevent=/usr[root@localhost memcached-1.4.0]# make[root@localhost memcached-1.4.0]# make intall

4. 測試是否成功安裝memcached

[root@localhost memcached-1.4.0]# ls -al /usr/local/bin | grep memcached-rwxr-xr-x 1 root root 188225 07-21 03:35 memcached

安裝OK。

三. 如何啟動 memcached 服務:

只需要啟動一個 memcached 監護進程,監護進程不需要配置文件,只要在命令行里面加三四個參數就可以了:

復制代碼 代碼如下:
[root@localhost bin]# memcached -d -m 100 -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid

 

-d: (run as a daemon) 選項是啟動一個守護進程
-m:(max memory to use for items in megabytes (default: 64 MB))是分配給Memcache使用的內存數量,單位是MB,我這里是100MB,
-u:(assume identity of <username> (only when run as root))是運行Memcache的用戶,我這里是root,
-l:(interface to listen on)是監聽的服務器IP地址,如果有多個地址的話,這里指定了服務器的IP地址127.0.0.1,
-p:是設置Memcache監聽的端口,這里設置了11211,最好是1024以上的端口,
-c:選項是最大運行的并發連接數,默認是1024,這里設置了256,根據服務器的負載量來設定,
-P:(save PID in <file>, only used with -d option)是設置保存Memcache的pid文件,這里是保存在 /tmp/memcached.pid

注:也可以啟動多個守護進程,不過端口不能重復。

四. 安裝 Memcached 的PHP擴展:

在PHP中使用Memcached,有兩種方式:

一種是安裝PHP的memcached擴展。該擴展是用c寫的,效率較高,需要在服務器上安裝。

另外一種則是直接使用客戶端的php-memcached-client類庫。

下面是使用PECL中Memcache的專用擴展,因為畢竟是用C寫的,效率高,而且安裝部署起來也比較方便。

1. 在 http://pecl.php.net/package/memcache 選擇相應想要下載的memcache版本。我下載的是:memcache-2.2.5.tgz 版本。

2. 安裝 memcache

[root@localhost software]# tar zxvf memcache-2.2.5.tgz[root@localhost software]# cd memcache-2.2.5[root@localhost memcache-2.2.5]# /usr/bin/phpize[root@localhost memcache-2.2.5]# ./configure –enable-memcache –with-php-config=/usr/bin/php-config –with-zlib-dir[root@localhost memcache-2.2.5]# make[root@localhost memcache-2.2.5]# make install

這步會有類似這樣的提示:Installing shared extensions: /usr/local/php/modules

3. 把/etc/php.ini中的

extension_dir = "./"

修改為:

extension_dir = "/usr/lib/php/modules"

4. 并添加: extension=memcache.so

也可執行以下shell命令,對php.ini文件的修改:

復制代碼 代碼如下:
sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"/nextension = "memcache.so"/n#' /usr/local/webserver/php/etc/php.ini

 

五. 安裝C/C++ Memcached客戶端庫:libmemcached

下載:http://download.tangent.org/libmemcached-0.32.tar.gz

1. 安裝 libmemcached

[root@localhost src]# tar zxvf libmemcached-0.32.tar.gz[root@localhost src]# cd libmemcached-0.32[root@localhost libmemcached-0.32]# ./configure --prefix=/usr[root@localhost libmemcached-0.32]# make && make install

2. 檢查安裝結果

[root@localhost src]# ls /usr/lib/libmemcache* //庫文件[root@localhost src]# ls /usr/include/libmemcached/* //頭文件[root@localhost src]# ls /usr/bin/mem* //命令行工具

六. 應用:

1. 啟動 memcache 服務

復制代碼 代碼如下:
[root@localhost bin]# memcached -d -m 100 -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid

 

2. 重啟 Web 服務器

[root@localhost bin]# service httpd restart

3. 創建 demo 測試程序

<?php//連接$mem = new Memcache;$mem->connect("127.0.0.1", 11211);echo 'Memcache Version is:'.$mem->getVersion().'<br/>';//保存數據$mem->set('key1', 'This is first memcache demo', 0, 60);$val = $mem->get('key1');echo "Get key1 value: ".$val."<br/>"//關閉連接$mem->close();?>

4. Memcached客戶端與tokyotyrant DB操作訪問

<?php$memcache = new memcache();$memcache->addServer('127.0.0.1:1978');function microtime_float(){  list($usec, $sec) = explode(" ", microtime());  return ((float)$usec + (float)$sec);}$time_start = microtime_float();$data = 'abc123';for($i = 0;$i <= 20000 ;$i++){  $key = (string) rand(1,100);  $memcache->set($key, $data);}for($i = 0;$i <= 20000 ;$i++){  $key = (string) rand(1,100);  echo $data = $memcache->get($key).'-'.$i.'<br/>';}$time_end = microtime_float();$time = $time_end - $time_start;echo $time;$memcache->close();?>

5. C/C++ 與 Memcached 結合代碼

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <libmemcached/memcached.h>int main(int argc, char *argv[]){  memcached_st *memc;  memcached_return rc;  memcached_server_st *servers;  char value[8191];  //連接服務器  memc = memcached_create(NULL);  servers = memcached_server_list_append(NULL, "127.0.0.1",11211, &rc);  rc = memcached_server_push(memc, servers);  memcached_server_free(servers);  //存儲數據  strcpy(value, "This is c first value");  rc = memcached_set(memc, "key1", 4, value, strlen(value),  (time_t)180, (uint32_t)0);  if (rc == MEMCACHED_SUCCESS) {  printf("Save key:key1 data:/"%s/" success./n", value);  }  //獲取數據  char return_key[MEMCACHED_MAX_KEY];  size_t return_key_length;  char *return_value;  size_t return_value_length;  char *keys[]= {"key1"};  size_t key_length[]= {4};  uint32_t flags;  rc = memcached_mget(memc, keys, key_length, 1);  return_value = memcached_fetch(memc, return_key,  &return_key_length, &return_value_length, &flags, &rc);  if (rc == MEMCACHED_SUCCESS) {  printf("Fetch key:%s data:%s/n", return_key, return_value);  }  //刪除數據  rc = memcached_delete(memc, "key1", 4, (time_t)0);  if (rc == MEMCACHED_SUCCESS) {  printf("Delete Key key1 success./n");  }  //釋放內存  memcached_free(memc);  return 0;}

編譯源代碼:

[root@localhost html]# gcc -o cmem cmem.c -lmemcached[root@localhost html]# ./cmem //執行Save key:key1 data:"This is c first value" success.Fetch key:key1 data:This is c first valueDelete Key key1 success.

6. C/C++ 與 Memcached 分布式結合代碼

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <libmemcached/memcached.h>int main(int argc, char *argv[]){  memcached_st *memc;  memcached_return rc;  memcached_server_st *servers;  char value[8191];  //connect multi server  memc = memcached_create(NULL);  servers = memcached_server_list_append(NULL, "localhost", 11211, &rc);  servers = memcached_server_list_append(servers, "localhost", 11212, &rc);  rc = memcached_server_push(memc, servers);  memcached_server_free(servers);  //Save multi data  size_t i;  char *keys[]= {"key1", "key2", "key3"};  size_t key_length[]= {4, 4, 4};  char *values[] = {"This is c first value", "This is c second value", "This is c third value"};  size_t val_length[]= {21, 22, 21};  for (i=0; i <3; i++) {  rc = memcached_set(memc, keys[i], key_length[i], values[i], val_length[i], (time_t)180,(uint32_t)0);  if (rc == MEMCACHED_SUCCESS) {    printf("Save key:%s data:/"%s/" success./n", keys[i], values[i]);  }  }  //Fetch multi data  char return_key[MEMCACHED_MAX_KEY];  size_t return_key_length;  char *return_value;  size_t return_value_length;  uint32_t flags;  rc = memcached_mget(memc, keys, key_length, 3);  while ((return_value = memcached_fetch(memc, return_key, &return_key_length, &return_value_length, &flags, &rc))) {  if (rc == MEMCACHED_SUCCESS) {    printf("Fetch key:%s data:%s/n", return_key, return_value);  }  }  //Delete multi data  for (i=0; i <3; i++) {  rc = memcached_set(memc, keys[i], key_length[i], values[i], val_length[i], (time_t)180, (uint32_t)0);  rc = memcached_delete(memc, keys[i], key_length[i], (time_t)0);  if (rc == MEMCACHED_SUCCESS) {    printf("Delete %s success/n", keys[i], values[i]);  }  }  //free  memcached_free(memc);  return 0;}

編譯源代碼:

[root@localhost html]# gcc -o cmultmem cmultmem.c -lmemcached[root@localhost html]# ./cmultmem //執行Save key:key1 data:"This is c first value" success.Save key:key2 data:"This is c second value" success.Save key:key3 data:"This is c third value" success.Fetch key:key2 data:This is c second valueFetch key:key3 data:This is c third valueFetch key:key1 data:This is c first valueDelete key1 successDelete key2 successDelete key3 success

以上c/c++代碼摘自:黑夜路人

7. 查看Memcache進程

[root@localhost html]# ps aux | grep memcachedroot   11382 0.0 0.7 55124 1896 ?    Ssl 13:06  0:00 memcached -d -m 100 -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pidroot   11395 0.0 0.2  3912  664 pts/1  R+  13:08  0:00 grep memcached

8. 結束Memcache進程

[root@localhost html]# kill `cat /tmp/memcached.pid`

希望本文所述對大家memcached緩存程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成一区二区| 日本久久中文字幕| 91精品国产99| 亚洲欧洲xxxx| 日韩在线视频免费观看高清中文| 日本亚洲欧美成人| 在线亚洲国产精品网| 国产精品男人爽免费视频1| 毛片精品免费在线观看| 亚洲精品wwww| 欧美韩日一区二区| 国产亚洲精品美女久久久| 国产精品福利在线| 欧美成人午夜视频| 精品亚洲va在线va天堂资源站| 日韩美女视频中文字幕| 色777狠狠综合秋免鲁丝| 午夜精品一区二区三区在线视| 国产日韩在线精品av| 亚洲黄色在线看| 久久国产精品首页| 久久精品成人一区二区三区| 色播久久人人爽人人爽人人片视av| 欧美午夜女人视频在线| 最新91在线视频| 欧美在线视频网| 91地址最新发布| 亚洲欧美一区二区激情| 91av在线免费观看视频| 久久人人97超碰精品888| 久久久久久高潮国产精品视| 91精品国产自产在线观看永久| 欧美日韩中文在线| 国产午夜精品一区理论片飘花| 亚洲欧美激情另类校园| 成人黄色av播放免费| 国产精品免费视频久久久| 国产精品9999| 亚洲人永久免费| 欧美午夜影院在线视频| 欧美洲成人男女午夜视频| 91精品国产成人www| 亚洲日本欧美日韩高观看| 456亚洲影院| 亚洲午夜未删减在线观看| 亚洲在线观看视频网站| 色播久久人人爽人人爽人人片视av| 精品欧美aⅴ在线网站| 91理论片午午论夜理片久久| 亚洲欧美另类在线观看| 久久久久久国产精品三级玉女聊斋| 亚洲级视频在线观看免费1级| 不用播放器成人网| 国产精品丝袜高跟| 午夜精品久久久久久久99黑人| 亚洲一区二区三区sesese| 成人免费网视频| 国产精品高潮呻吟视频| 亚洲 日韩 国产第一| 欧美在线一级va免费观看| 欧美激情亚洲自拍| 亚洲激情在线观看视频免费| 国产亚洲精品91在线| 国产成人精品视频在线| 欧美色视频日本版| 久久天堂av综合合色| 色樱桃影院亚洲精品影院| 欧美日韩在线另类| 欧洲成人在线观看| 欧美多人爱爱视频网站| 欧美日韩国产精品一区| 国产亚洲成精品久久| 国产日韩精品在线播放| 色综合色综合久久综合频道88| 欧美成人免费网| 日韩精品中文字幕久久臀| 日本最新高清不卡中文字幕| 久久久久日韩精品久久久男男| 国产精品久久久久秋霞鲁丝| 亚洲第一精品夜夜躁人人爽| 欧美极品美女视频网站在线观看免费| 日韩av在线不卡| 久久天天躁狠狠躁老女人| 国产精品久久久久久久9999| 中文字幕精品一区二区精品| 91九色综合久久| www高清在线视频日韩欧美| 狠狠干狠狠久久| 亚洲va欧美va国产综合久久| 456亚洲影院| 91最新国产视频| 欧美成人精品xxx| 欧美日韩国产麻豆| 亚洲精品成a人在线观看| 国产激情综合五月久久| 日韩亚洲成人av在线| 日韩欧美中文在线| 91久久久亚洲精品| 国模视频一区二区三区| 色偷偷9999www| 欧美性受xxxx白人性爽| 国产亚洲视频在线观看| 青青草原成人在线视频| 久久视频这里只有精品| 国产亚洲一区二区在线| 国产精品亚洲综合天堂夜夜| 亚洲精品久久久久久久久久久久久| 亚洲激情中文字幕| 成人久久一区二区| 日韩av在线电影网| 91干在线观看| www.日本久久久久com.| 日韩欧美国产中文字幕| 久久夜色撩人精品| 日韩av快播网址| 中文字幕精品在线| 亚洲第一精品夜夜躁人人爽| 久久久精品在线| 国产日韩欧美另类| 久久99久久99精品中文字幕| 亚洲国产精品成人一区二区| 久久国产精品首页| 亚洲色图色老头| 久久九九热免费视频| 日本久久久久亚洲中字幕| 久久精品成人欧美大片古装| xxxxxxxxx欧美| 国产亚洲激情在线| 成人午夜激情免费视频| 超薄丝袜一区二区| 中文字幕九色91在线| 久久中文字幕在线视频| 国内外成人免费激情在线视频网站| 欧美一区二粉嫩精品国产一线天| 久久久亚洲成人| 亚洲精品小视频在线观看| 国产精品久久久久久亚洲调教| 97av在线影院| 美女扒开尿口让男人操亚洲视频网站| 国产专区精品视频| 国产精品色午夜在线观看| 久久亚洲综合国产精品99麻豆精品福利| 亚洲乱码一区二区| 欧美激情亚洲另类| 日韩影视在线观看| 黄色成人av在线| 日韩成人激情影院| 伊人久久精品视频| 欧美日韩不卡合集视频| 性欧美xxxx视频在线观看| 亚洲精品日韩在线| 亚洲天堂免费视频| 亚洲色图25p| 精品国产区一区二区三区在线观看| 欧美视频中文字幕在线| 成人情趣片在线观看免费| 欧美性色xo影院| 国产一区二区三区免费视频| 久久久久一本一区二区青青蜜月| 欧美亚洲视频一区二区| 中文字幕v亚洲ⅴv天堂| 热re99久久精品国产66热| 国产精品扒开腿做爽爽爽的视频| 久久久久久亚洲精品|