四 Memcache

官网http://memcached.org

了解 cookies和session

安装memcached

# yum install memcached  -y

安装nc和telnet 来管理memcached

# yum install nc telnet -y

查看配置文件

# 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 lidao99601 "|nc 172.16.1.21 11211
STORED

# printf "get oldboy01 "|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 "|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函数

原文地址:https://www.cnblogs.com/cqzhou/p/9224799.html