亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Memcached緩存系統(tǒng)的介紹、安裝以及應用方法詳解

 更新時間:2016年05月31日 12:12:39   作者:ctowoo  
這篇文章主要介紹了Memcached緩存系統(tǒng)的介紹、安裝以及應用方法,詳細分析了Memcached的安裝、啟動,并給出了php與C++使用Memcached的方法,需要的朋友可以參考下

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

一. 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是一個高性能的、分布式內(nèi)存對象緩存系統(tǒng),應用廣泛。 通過緩存數(shù)據(jù)庫查詢結(jié)果,減少數(shù)據(jù)庫訪問次數(shù),以提高動態(tài)Web應用的速度、 提高可擴展性。

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

Memcached 官方網(wǎng)站:http://www.danga.com/memcached

二. memcached 的安裝:

注:memcached 用到了libevent這個庫用于Socket的處理,所以還需要安裝libevent.官網(wǎng):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 libevent
lrwxrwxrwx  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.2
lrwxrwxrwx  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.a
lrwxrwxrwx  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.la
lrwxrwxrwx  1 root root    26 07-21 03:33 libevent_core.so -> libevent_core-1.4.so.2.1.3
lrwxrwxrwx  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.la
lrwxrwxrwx  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.la
lrwxrwxrwx  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 服務(wù):

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

復制代碼 代碼如下:
[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使用的內(nèi)存數(shù)量,單位是MB,我這里是100MB,
-u:(assume identity of <username> (only when run as root))是運行Memcache的用戶,我這里是root,
-l:(interface to listen on)是監(jiān)聽的服務(wù)器IP地址,如果有多個地址的話,這里指定了服務(wù)器的IP地址127.0.0.1,
-p:是設(shè)置Memcache監(jiān)聽的端口,這里設(shè)置了11211,最好是1024以上的端口,
-c:選項是最大運行的并發(fā)連接數(shù),默認是1024,這里設(shè)置了256,根據(jù)服務(wù)器的負載量來設(shè)定,
-P:(save PID in <file>, only used with -d option)是設(shè)置保存Memcache的pid文件,這里是保存在 /tmp/memcached.pid

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

四. 安裝 Memcached 的PHP擴展:

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

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

另外一種則是直接使用客戶端的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

也可執(zhí)行以下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. 檢查安裝結(jié)果

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

六. 應用:

1. 啟動 memcache 服務(wù)

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

2. 重啟 Web 服務(wù)器

[root@localhost bin]# service httpd restart

3. 創(chuàng)建 demo 測試程序

<?php
//連接
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
echo 'Memcache Version is:'.$mem->getVersion().'<br/>';
//保存數(shù)據(jù)
$mem->set('key1', 'This is first memcache demo', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: ".$val."<br/>"
//關(guān)閉連接
$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 結(jié)合代碼

#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];
  //連接服務(wù)器
  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);
  //存儲數(shù)據(jù)
  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);
  }
  //獲取數(shù)據(jù)
  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);
  }
  //刪除數(shù)據(jù)
  rc = memcached_delete(memc, "key1", 4, (time_t)0);
  if (rc == MEMCACHED_SUCCESS) {
  printf("Delete Key key1 success./n");
  }
  //釋放內(nèi)存
  memcached_free(memc);
  return 0;
}

編譯源代碼:

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

6. C/C++ 與 Memcached 分布式結(jié)合代碼

#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 //執(zhí)行
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 value
Fetch key:key3 data:This is c third value
Fetch key:key1 data:This is c first value
Delete key1 success
Delete key2 success
Delete key3 success

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

7. 查看Memcache進程

[root@localhost html]# ps aux | grep memcached
root   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.pid
root   11395 0.0 0.2  3912  664 pts/1  R+  13:08  0:00 grep memcached

8. 結(jié)束Memcache進程

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

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

相關(guān)文章

  • Rsync ERROR: auth failed on module解決方法

    Rsync ERROR: auth failed on module解決方法

    今天在兩臺服務(wù)器同步備份在用戶權(quán)限上糾結(jié)了很多,主要關(guān)于這個問題網(wǎng)上的配置方法不一,源自rsync版本不一致,這里簡單總結(jié)下,方便需要的朋友
    2013-09-09
  • 查找服務(wù)器變慢的方法

    查找服務(wù)器變慢的方法

    服務(wù)器慢如何查找,查找服務(wù)器變慢的辦法有哪些,下面由腳本之家小編幫大家解決此問題,需要的朋友可以一起看看吧
    2015-09-09
  • 如何在多臺服務(wù)器上運行相同命令

    如何在多臺服務(wù)器上運行相同命令

    這篇文章主要介紹了在多臺服務(wù)器上運行相同命令的相關(guān)知識,包括安裝及使用方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • 服務(wù)器運維基礎(chǔ)指南教程

    服務(wù)器運維基礎(chǔ)指南教程

    作為一個開發(fā)人員,對于服務(wù)器的操作不可避免,最常用的操作就是部署應用到服務(wù)器,及在生產(chǎn),測試環(huán)境通過查看日志排查問題,這篇文章主要介紹了服務(wù)器運維基礎(chǔ)指南,需要的朋友可以參考下
    2023-02-02
  • HTTP全部標準響應狀態(tài)碼整理

    HTTP全部標準響應狀態(tài)碼整理

    HTTP標準響應狀態(tài)碼用來表明特定 HTTP 請求是否成功完成。 響應被歸為以下五大類:信息響應 (100–199);成功響應 (200–299);重定向消息 (300–399);客戶端錯誤響應 (400–499);服務(wù)端錯誤響應 (500–599)
    2023-07-07
  • 用兩塊硬盤組建RAID0磁盤陣列簡單教程(圖文詳解)

    用兩塊硬盤組建RAID0磁盤陣列簡單教程(圖文詳解)

    最近為了考慮數(shù)據(jù)安全特做了raid陣列,采用兩塊或多塊硬盤組建RAID磁盤陣列也成為了目前比較有性價比的硬盤性能提升解決方案
    2014-05-05
  • DevOps自動化組件RUNDECK開發(fā)部署使用說明

    DevOps自動化組件RUNDECK開發(fā)部署使用說明

    這篇文章主要為大家介紹了DevOps自動化組件RUNDECK開發(fā)部署使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • 使用Nexus添加jar包到私服里的方法步驟

    使用Nexus添加jar包到私服里的方法步驟

    這篇文章主要介紹了使用Nexus添加jar包到私服里的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • DNSLOG平臺搭建及其原理解析

    DNSLOG平臺搭建及其原理解析

    DNSlog就是存儲在DNS Server上的域名訪問信息,它記錄著用戶對域名littlehann.com等的訪問信息,類似日志文件,這篇文章主要介紹了DNSLOG平臺搭建及其原理分析 ,需要的朋友可以參考下
    2024-01-01
  • 服務(wù)器斷電導致虛擬機數(shù)據(jù)丟失的恢復方法詳解

    服務(wù)器斷電導致虛擬機數(shù)據(jù)丟失的恢復方法詳解

    這篇文章主要介紹了服務(wù)器斷電導致虛擬機數(shù)據(jù)丟失的恢復方法,較為詳細的分析了服務(wù)器斷電導致的數(shù)據(jù)丟失情況與相應的故障處理技巧,需要的朋友可以參考下
    2018-01-01

最新評論