21.5 memcached命令行;21.6 memcached數據導出和導入;21.7 php鏈接

21.5 memcached命令行php

Memcached語法規則:算法

1. <command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\nvim

注:\r\n在windows下是Enter windows

2. <command name> 能夠是set, add, replace服務器

3. set表示按照相應的<key>存儲該數據,沒有的時候增長,有的時候覆蓋session

4. add表示按照相應的<key>添加該數據,可是若是該<key>已經存在則會操做失敗curl

5. replace表示按照相應的<key>替換數據,可是若是該<key>不存在則操做失敗。tcp

6. <key> 客戶端須要保存數據的keyide

7.  <flags> 是一個16位的無符號的整數(以十進制的方式表示)。該標誌將和須要存儲的數據一塊兒存儲,並在客戶端get數據時返回。客戶端能夠將此標誌用作特殊用途,此標誌對服務器來講是不透明的。memcached

8. <exptime> 爲過時的時間。若爲0表示存儲的數據永遠不過時(但可被服務器算法:LRU 等替換)。若是非0(unix時間或者距離此時的秒數),當過時後,服務器能夠保證用戶得不到該數據(以服務器時間爲標準)。

9. <bytes> 須要存儲的字節數,當用戶但願存儲空數據時<bytes>能夠爲0

10. <data block>須要存儲的內容,輸入完成後,最後客戶端須要加上\r\n(直接點擊Enter)做爲結束標誌。

啓動

[root@hao-01 ~]# systemctl start memcached

1. 安裝telnet

[root@hao-01 ~]# yum install -y telnet

2. telnet 指定ip 端口進入telnet界面

[root@hao-01 ~]# telnet 127.0.0.1 11211

寫入存儲格式(英語單詞表示):

set key1 flags exptime bytes

data block

提示:在telnet模式下,退格鍵須要按住Ctrl鍵

寫入存儲格式

set key1 0 30 5  

12345

clipboard.png

查看key1存儲的內容(查看超出了存儲時間,會查不到的)

get key1

clipboard.png

get key1

clipboard.png

提示:在telnet模式下,退格鍵須要按住Ctrl鍵

實驗案例:

設定key1flags1 120秒到期時間 4個存儲字節

set key1 1 120 4          

1234

clipboard.png

替換key1flags1 0爲不限制時間 6個存儲字節

replace key1 1 0 6

123456

clipboard.png

查看key1的值

clipboard.png

刪除key1的值

delete key1

clipboard.png

21.6 memcached數據導出和導入

1. 導出memcached數據:

[root@hao-01 ~]# memcached-tool 127.0.0.1:11211 dump

clipboard.png

2. 導出memcached數據,重定向到指定文件data.txt內:

[root@hao-01 ~]# memcached-tool 127.0.0.1:11211 dump > data.txt

3. 重啓memcached

(清理以前存儲的數據,爲了導入已存在的數據會不被覆蓋的)

[root@hao-01 ~]# systemctl restart memcached

4. data.txt導入到memcached

clipboard.png

若nc命令不存在,yum install nc

注意:導出的數據是帶有一個時間戳的,這個時間戳就是該條數據過時的時間點,若是當前時間已經超過該時間戳,那麼是導入不進去的

clipboard.png

21.7 php鏈接memcached

1. /...src/目錄下,下memcache

[root@hao-01 ~]# cd /usr/local/src/

[root@hao-01 src]# wget http://www.apelearn.com/bbs/data/attachment/forum/memcache-2.2.3.tgz

2. 解壓

[root@hao-01 src]# tar zxvf memcache-2.2.3.tgz

3. 進入memcache-2.2.3生成phpize文件

[root@hao-01 src]# cd memcache-2.2.3

#[root@hao-01 src]# yum install -y autoconf

[root@hao-01 memcache-2.2.3]# /usr/local/php-fpm/bin/phpize

4. 編譯

[root@hao-01 memcache-2.2.3]# ./configure --with-php-config=/usr/local/php-fpm/bin/php-config

[root@hao-01 memcache-2.2.3]# echo $?

5. makemake install執行:

[root@hao-01 memcache-2.2.3]# make && make install

[root@hao-01 memcache-2.2.3]# echo $?

6. make install 生成以下文件:

[root@hao-01 memcache-2.2.3]# ls /usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20131226/

clipboard.png

7. 編輯php-ini

[root@hao-01 memcache-2.2.3]# vim /usr/local/php-fpm/etc/php-ini

添加內容擴展

extension=memcache.so

clipboard.png

8. 檢查有沒有memcache這個模塊:

[root@hao-01 memcache-2.2.3]# /usr/local/php-fpm/bin/php -m

21.8 memcached中存儲session

1. 下載session存儲腳本

[root@hao-01 ~]# wget http://study.lishiming.net/.mem_se.txt

2. 進入

[root@hao-01 ~]# cd /data/wwwroot/test/

3. 移動session存儲腳本,並重命名php格式腳本:

[root@hao-01 test.com]# mv /root/.mem_se.txt  1.php

4. curl訪問1.php

[root@hao-01 test.com]# curl localhost/1.php

5. 查看tmp下有沒有sess_格式的文件:

[root@hao-01 test.com]# ls -lt /tmp/

6. 編輯php-ini

[root@hao-01 test.com]# vim /usr/local/php-fpm/etc/php-ini

註釋掉這行:session.save_handler = files

添加:

session.save_handler = memcache session.save_path

"tcp://192.168.0.9:11211" 

clipboard.png

本實例是在lamp/lnmp環境下實現(下面哪一種沒問題,就用哪一種)

1. 編輯php.ini添加兩行

session.save_handler = memcache session.save_path

"tcp://192.168.0.9:11211" 

2. 或者httpd.conf中對應的虛擬主機中添加

php_value session.save_handler "memcache" php_value session.save_path "tcp://192.168.0.9:11211" 

3. 或者php-fpm.conf對應的pool中添加

php_value[session.save_handler] = memcache

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

7. curl訪問1.php

[root@hao-01 test.com]# curl localhost/1.php

相關文章
相關標籤/搜索