天天看點

memcached的一些簡單使用

memcached也是和mysql一樣有一個指令行,能在指令行中建立和檢索資料。

使用telnet可以進入memcached指令行:

建立資料:

查詢資料:

資料過期了的話就不存在了:

建立資料指令釋義:

set key2 0 30 2 set: 建立資料指令(command name) key2: 建立一個名為key2的key (key) 0 : 特殊标記位(flags) 30 : 定義這個資料的過期時間為30秒(exptime) 2 : 定義這個key所能夠存儲的value長度,機關是位元組 (bytes)

Memcached文法規則:

replace替換資料示例:

delete删除資料示例:

add添加資料示例:

因為memcached的資料是存儲在記憶體中的,當服務需要重新開機的時候,需要先讓memcached裡的資料寫到磁盤中,不然資料會丢失。是以介紹一下memcached如何導出和導入資料。

memcached中添加了如下幾個不過期的資料:

添加完之後,memcached的狀态如下:

将資料導出到一個檔案裡:

注意:導出的資料是帶有一個時間戳的,這個時間戳就是該條資料過期的時間點,如果目前時間已經超過該時間戳,那麼是導入不進去的

重新開機服務後将資料導入到memcached裡:

如果導入後發現沒有資料,這是因為備份檔案裡記錄的時間戳已經過期了,可以修改檔案中的時間戳保證資料的有效期。可以寫一個簡單的腳本批量替換這些檔案中的時間戳:

然後再到memcached裡檢視資料:

可以看到,資料正常導入了。

在LNMP、LAMP等環境下,我們需要讓php與memcached進行互動,就像php與mysql互動那樣,php也得通過某個子產品連接配接memcached後,才能進行資料的呈現、互動等操作。

1.先安裝php的memcache擴充,我這裡的php是LNMP環境的并且在之前已經安裝好了,是以現在進行擴充即可:

安裝完後會有類似這樣的提示:Installing shared extensions: /usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20131226/

然後修改php.ini添加一行extension="memcache.so“

檢查/usr/local/php-fpm/bin/php -m裡是否有memcache子產品:

測試:

1.下載下傳測試腳本:

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

2.執行測試腳本:

測試輸出如上,代表沒問題。

在負載均衡叢集中,使用者第一次通路的是A伺服器,并且在該伺服器上登入了賬戶,這個登入資訊就儲存在session中。由于是叢集的關系,是以使用者可能下一次再通路的時候就不是通路到A伺服器上,而是通路到B伺服器上了。但是之前的session卻儲存在A伺服器上,那麼使用者在B伺服器上就隻能重新登入一次,因為在B伺服器上并沒有session資訊。是以為了讓叢集中的伺服器都能夠共享session,就可以把session存儲在一個memcached伺服器中,所有的web伺服器往這台memcached伺服器上讀session資訊,就能做到簡單的session共享。

這裡示範的是lnmp環境下的配置:

php服務預設會把session資訊存在本地檔案中,是以需要修改存儲的類型。

1.編輯php.ini配置檔案添加以下兩行:

session.save_handler = memcache # 指定session的存儲類型 session.save_path = "tcp://192.168.77.130:11211" # 指定memcached伺服器的ip和端口

或者php-fpm.conf對應的pool中添加以下兩行:

php_value[session.save_handler] = memcache php_value[session.save_path] = " tcp://192.168.77.130:11211"

2.修改完之後重新開機服務:

3.測試,下載下傳測試檔案 + 移動檔案到預設站點目錄并更名 + curl測試,素質三連:

那個 0rmd502kjrsvrnqhqtn1a0eih6 就是memcached中的key,通過這個key才能去memcached裡拿值,如果沒有這個key的話,可能是配置檔案沒配置對。

4.進入memcached指令行,看看有沒有存儲到對應的session資料:

如上,可以看到get到了該鍵的值,證明沒問題,能夠正常存儲。

本文轉自 ZeroOne01 51CTO部落格,原文連結:http://blog.51cto.com/zero01/2055498,如需轉載請自行聯系原作者