四 Memcache

官網http://memcached.orgphp

瞭解 cookies和sessionhtml

安裝memcachednginx

# yum install memcached  -yweb

安裝nc和telnet 來管理memcachedredis

# yum install nc telnet -y數據庫

查看配置文件vim

# cat /etc/sysconfig/memcached瀏覽器

 查看啓動文件緩存

# cat /usr/lib/systemd/system/memcached.service服務器

 啓動

# systemctl start memcached.service

 

檢查一下memcached的端口

# ss -lntup|grep memcached

 

 

# printf "set oldboy01 0 0 10\r\nlidao99601\r\n"|nc 172.16.1.21 11211
STORED

 

# printf "get oldboy01\r\n"|nc 172.16.1.21 11211
VALUE oldboy01 0 10
lidao99601
END

 設置只監聽內網網卡 # vim /etc/sysconfig/memcached

 

或者修改# cat /usr/lib/systemd/system/memcached.service

添加到ExecStart= 後面

 

重啓# systemctl  restart memcached.service 實際工做中不要重啓 

重啓事後數據就沒了  由於他只是工做在內存中

========================================================

 具體作法 php部署memcache客戶端

將web01的wordpress準備好,接下來在這臺機器安裝memcache客戶端。
tar xf memcache-2.2.5.tgz
cd memcache-2.2.5
/application/php/bin/phpize
./configure --enable-memcache --with-php-config=/application/php/bin/php-config --with-zlib-dir
make
make install

=====================================================================

安裝完成會有個命令只能在PHP裏使用

Installing shared extensions:

php.ini-production更名爲php.ini

# vim /application/php/lib/php.ini最後一行加上extension=memcache.so

sed -i '$a extension=memcache.so' /application/php/lib/php.ini
pkill php #killall php-fpm 殺掉php
/application/php/sbin/php-fpm -t 檢查語法

/application/php/sbin/php-fpm  啓動

# /application/php/bin/php -m|grep mem檢查是否有memcache模塊
memcache

/application/php/bin/php -m|grep memcache

 ==================================================

php代碼測試 

EOF兩邊加了雙引號或者單引號 編輯的內容有符號的不會被解析

cat >/application/nginx/html/blog/mc.php<<'EOF'
<?php
$memcache = new Memcache;
$memcache->connect('10.0.0.21', 11211) or die ("Could not connect");
$memcache->set('key_oldboy', 'hello,oldgirl');
$get_value = $memcache->get('key_oldboy');
echo $get_value;
?>
EOF
# printf "get key20171117\r\n"|nc 10.0.0.21 11211
VALUE key20171117 0 11
hello,world
END

 =================================================

web管理memcached

官網:http://www.junopen.com/memadmin/
tar xf memadmin-1.0.12.tar.gz -C /application/nginx/html/blog/

memadmin裏面的權限過大 修改一下

# find memadmin -type f |xargs chmod 644
# find memadmin -type d |xargs chmod 755

瀏覽器訪問http://blog.etiantian.org/memadmin

默認帳號密碼admin

 

 

Memcached緩存案例1-緩存wordpress數據庫

wordpress緩存數據緩存到memcached中:

插件下載地址https://cn.wordpress.org/plugins/memcached/
wordpress緩存數據緩存到redis中:

插件下載https://cn.wordpress.org/plugins/redis-cache/


wordpress會自動檢查wp-content下面是否有object-cache.php
使用memcached緩存wordpress博文數據

下載好後解壓移動到

# mv object-cache.php /application/nginx/html/blog/wp-content/

# vim object-cache.ph
修改:array('127.0.0.1','');爲memcached服務器ip地址

365                         $buckets = array('172.16.1.21:11211','');

 ==================================================

測試 登陸博客 寫內容,而後查看memcache的web管理命中監控不斷增長

數據遍歷 相應的內容和數據庫的同樣,這樣就成功把數據庫的信息緩存到了memcache裏

 ===================================================

Memcached Session共享
方法1:經過程序實現,web01只須要往memcahce寫session,web02從memcahce讀session,看成普通數據讀寫(更具備通用性)

方法2:經過php的配置文件,php默認將session存儲在文件中,修改成存儲在memcached中

 

[root@web01 php]# grep 'session.save' /application/php/lib/php.ini
; http://php.net/session.save-handler
session.save_handler = files 存放會話數據的地方換成memcache
; session.save_path = "N;/path"
; session.save_path = "N;MODE;/path"
; http://php.net/session.save-path
;session.save_path = "/tmp"  默認方在/tmp下 設置存放在memcached服務下"tcp://172.16.1.21:11211"
; (see session.save_path above), then garbage collection does *not*

 

sed -i 's#session.save_handler = files#session.save_handler = memcache#;$a session.save_path = "tcp://172.16.1.21:11211"' /application/php/lib/php.ini

使用這個功能,須要使用php的session函數

相關文章
相關標籤/搜索