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
查看key1存儲的內容(查看超出了存儲時間,會查不到的):
get key1
get key1
提示:在telnet模式下,退格鍵須要按住Ctrl鍵
實驗案例:
設定key1:flags爲1 120秒到期時間 4個存儲字節
set key1 1 120 4
1234
替換key1:flags爲1 0爲不限制時間 6個存儲字節
replace key1 1 0 6
123456
查看key1的值:
刪除key1的值:
delete key1
21.6 memcached數據導出和導入
1. 導出memcached的數據:
[root@hao-01 ~]# memcached-tool 127.0.0.1:11211 dump
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:
若nc命令不存在,yum install nc
注意:導出的數據是帶有一個時間戳的,這個時間戳就是該條數據過時的時間點,若是當前時間已經超過該時間戳,那麼是導入不進去的
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. make和make 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/
7. 編輯php-ini:
[root@hao-01 memcache-2.2.3]# vim /usr/local/php-fpm/etc/php-ini
添加內容擴展:
extension=memcache.so
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"
本實例是在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