日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Memcached安装及配置

發(fā)布時間:2024/6/21 综合教程 24 生活家
生活随笔 收集整理的這篇文章主要介紹了 Memcached安装及配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、Memcached介紹

1、Memcached是國外社區(qū)網(wǎng)站LiveJournal團隊開發(fā),通過緩存數(shù)據(jù)庫查詢結(jié)果,減少數(shù)據(jù)庫訪問次數(shù),從而提高動態(tài)web站點性能。

2、官方站點http://memcached.org

3、基于c/s架構(gòu),協(xié)議簡單

4、基于libevent的事件處理

5、自主內(nèi)存存儲管理(slab allowcation)

6、數(shù)據(jù)過期方式:Lazy Expiration和LRU

7、程序員在開發(fā)時,自行調(diào)用Memcached的API,Memcached的功能才能生效

Memcached:指的是服務(wù)器Server

memcached:指的是php連接memcached服務(wù)可以使用的擴展,

memcache:php連接Memcached服務(wù)可以使用的另一個擴展,沒有memcached強大

libmemcached:C庫

二、Slab allocation

1、Slab Allocation的原理--將分配的內(nèi)存分割成各種尺寸的塊(chunk),并把尺寸相同的塊分成組(chunk的集合),每個chunk集合被稱為slab;

2、Memcached的內(nèi)存分配以Page為單位,Page默認值為1M,可以在啟動時通過-l參數(shù)來指定;

3、Slab是由多個Page組成的,Page按照大小切割成多個chunk。

4、slab class:特定大小的chunk組

三、Growth factor

1、memcached在啟動時通過-f選項可以指定Growth Factor因子。改值控制chunk大小的差異。默認值為1.25;

2、通過memcached-tool查看指定memcached實例的不同slab狀態(tài),可以看到個Item所占大小(chunk大小)差距為1.25

3、命令:# memcached-tool 127.0.0.1:11211 display

四、Memcached數(shù)據(jù)過期方式

1、Layy Expiration

memcached內(nèi)部不會監(jiān)視記錄是否過期,而是在get時查看記錄的時間戳,檢查記錄是否過期。這種技術(shù)被稱為lazy(惰性)expiration。因此,memcached不會再過期監(jiān)視上耗費CPU時間。

2、LRU(Least Recently Used)

memecached會優(yōu)先使用已超時的記錄的空間,但即使如此,也會發(fā)生追加新紀錄時空間不足的情況,此時就要使用名為Least Recently Used(LRU)機制來分配空間。顧名思義,這是刪除“最近最少使用”的記錄的機制。因此,當內(nèi)存空間不足時(無法從slab class獲取到新的空間時),就從最近未使用的記錄中搜索,并將七空間分配給新的記錄。從緩存的使用角度來看,該模型十分理想。

五、Memcached安裝

1、安裝epel擴展源

# yum -y install epel-release

2、memcached是基于libevent的,libmemcached是memcached的工具

# yum -y install libevent memcached libmemcached

3、啟動memcached

# /etc/init.d/memcached start

4、memcache啟動時的參數(shù)要在/etc/sysconfig/memcached文件中配置

# vim /etc/sysconfig/memcached

5、Memcached啟動時參數(shù)

-d:選項是啟動一個守護進程

-m:是分配給Memcached使用的內(nèi)存數(shù)量,單位是MB

-M:內(nèi)存耗盡時返回錯誤而并非刪除條目

-u:是運行Memcached的用戶,如果當前為root的話,需要使用此參數(shù)指定用戶

-l:是監(jiān)聽的服務(wù)器的IP地址

-p:是設(shè)置Memcached監(jiān)聽的端口,默認是11211

-c:選項是最大運行的并發(fā)連接數(shù),默認是1024

-n:chun的初始大小,key+value+flags,默認為48

-P:是設(shè)置保存Memcached的pid文件

六、查看memcached運行狀態(tài)

1、# memcached-tool 127.0.0.1 stats

2、# echo stats | nc 127.0.0.1 11211需要安裝nc的rpm包

# yum -y install nc

3、# memstat --servers=127.0.0.1:11211需要安裝libmemcached

的rpm包

七、Memcached命令行

通過telnet連接Memcached

# telnet 127.0.0.1 11211

存取數(shù)據(jù)

set key1 0 300 2

12

STORED

get key1

VALUE key1 0 2

12

END

八、Memcached語法規(guī)則

<command name><key><flags><exptime><bytes>
<data block>

注:
在windows下是Enter鍵

1、<command name>可以是“set”,“add”,“replace”。

“set”表示按照相應(yīng)的<key>存儲該數(shù)據(jù),沒有則增加,有則覆蓋

“add”表示按照相應(yīng)的<key>添加該數(shù)據(jù),但是如果該<key>已經(jīng)存在則會操作失敗

“replace”表示按照相應(yīng)的<key>替換數(shù)據(jù),但是如果該<key>不存在則會操作失敗

2、<key>客戶端需要保存數(shù)據(jù)的key

3、<flags>是一個16位的無符號的證書(以十進制的方式表示)。該標志將和需要存儲的數(shù)據(jù)一起存儲,并在客戶端get數(shù)據(jù)時返回。客戶可以將此標志用作特殊用途,此標志對服務(wù)器來說是不透明的。

4、<exptime>過期時間

若為0表示存儲的數(shù)據(jù)永遠不過期(但可被服務(wù)器算法:LRU等替換)。如果非0(unix時間或者距離此時的秒數(shù)),當過期后,服務(wù)器可以保證用戶得不到該數(shù)據(jù)(以服務(wù)器時間為準)

5、<bytes>需要存儲的內(nèi)容,輸入完成后,最后客戶端需要加上“
”(直接點擊Enter)作為“命令頭”的結(jié)束標志

九、PHP連接Memcached

先安裝php的memcache擴展

# tar zxvf memcache-2.2.3.tgz

# cd memcache-2.2.3

phpize屬于php-devel包,源碼包安裝的選擇源碼包安裝的位置,一般情況位于:

/usr/local/php/bin/phpize

# /usr/bin/phpize

生成configure文件

# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache

# make && make install

# vim /etc/php.ini

extension = memcache.so

extension_dir = "/usr/lib64/php/modules/"

添加完成后用php -m查看一下是否有memcache模塊

下載個php測試一小下

# curl www.apelearn.com/study_v2/.memcache.txt > 1.php 2>/dev/null

# php 1.php如果出現(xiàn)下面信息說明配置正確:

Get key1 value: This is first value<br>Get key1 value: This is replace value<br>Get key2 value: Array

(

[0] => aaa

[1] => bbb

[2] => ccc

[3] => ddd

)

十、Memcached實現(xiàn)session共享

在lamp/lnmp環(huán)境下實現(xiàn)的通用配置

編輯php.ini添加下面兩行

session.save_handler = "memcache"

session.save_path = "tcp://127.0.0.1:11211"

或者編輯httpd.conf中對應(yīng)的虛擬主機添加:

php_value session.save_handler "memcache"

php_value session.save_path "tcp://127.0.0.1:11211"

或者php-fpm.conf對應(yīng)的pool中添加

php_value[session.save_handler] = memcache

php_value[session.save_path] = "tcp://127.0.0.1:11211"

IP地址是Memcached server的ip地址

在nginx發(fā)布的目錄下創(chuàng)建session.php,加入如下內(nèi)容:

<?php

session_start();

if (!isset($_SESSION['TEST'])) {

$_SESSION['TEST'] = time();

}

$_SESSION['TEST3'] = time();

print $_SESSION['TEST'];

print "<br><br>";

print $_SESSION['TEST3'];

print "<br><br>";

print session_id();

?>

# curl -x127.0.0.1:80 localhost/session.php

# telnet 127.0.0.1 11211

get lundelrir281bbgi4p4d261tq5

就可以看到Memcached中已經(jīng)保存了session的信息了

通過# curl -x127.0.0.1:80 localhost/phpinfo.php | grep session.save_path可以查看到memcache的配置信息

也可以通過phpinfo.php在頁面中的session項中看到memcache的配置信息

總結(jié)

以上是生活随笔為你收集整理的Memcached安装及配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。