官网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函数