memcache、redis

memcache介绍与安装
memcache是一个开源分布式的内存对象缓存系统(另一个类似功能的软件叫redis).一般放在web程序与数据库,帮助缓存程序取数据库的数据。
client
|
    正向代理(静态)
因特网
|
squid或varnish(静态)
|
nginx
php-factcgi(opcache做php代码缓存)
|
memcache或redis
|
mysql(query_cache)
笔记目录/program/lnmp_soft/
libevent-1.4.11-stable.tar.gz ----memcache的事件驱动库
memcached-1.4.22.tar.gz ----memcache主程序包(memcache官网下载)
memcache-2.2.7.tgz --php的memcache扩展包(php官网下载)
上面三个软件包,第三个在安装php第三方扩展模块时就已经安装并支持了,所以下面继续安装另两个软件包
# tar xf libevent-1.4.11-stable.tar.gz -C /usr/src/lnmp
# cd /usr/src/lnmp/libevent-1.4.11-stable/
# ./configure ;make ;make install
# tar xf memcached-1.4.22.tar.gz -C /usr/src/lnmp
# cd /usr/src/lnmp/memcached-1.4.22/
# ./configure --with-libevent=/usr/local/
# ;make ;make install
# /usr/local/bin/memcached -d -m 100 -u root --启动memcached守护进程,-d表示启动daemon,-m 100表示分配100MB内存给memcached做缓存,-u root指定以root用户来跑这个daemon
关闭方法(kill -TERM PID)
# lsof -i:11211 ----默认端口为11211
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
memcached 28795 root 26u IPv4 268755 0t0 TCP *:memcache (LISTEN)
memcached 28795 root 27u IPv6 268756 0t0 TCP *:memcache (LISTEN)
memcached 28795 root 28u IPv4 268759 0t0 UDP *:memcache
memcached 28795 root 29u IPv4 268759 0t0 UDP *:memcache
memcached 28795 root 30u IPv4 268759 0t0 UDP *:memcache
memcached 28795 root 31u IPv4 268759 0t0 UDP *:memcache
memcached 28795 root 32u IPv6 268760 0t0 UDP *:memcache
memcached 28795 root 33u IPv6 268760 0t0 UDP *:memcache
memcached 28795 root 34u IPv6 268760 0t0 UDP *:memcache
memcached 28795 root 35u IPv6 268760 0t0 UDP *:memcache
测试:做完上面的步骤,其实你的工作基本就完成了,只需要告诉php开发人员,你的memcache的端口和IP,他们就可以写程序连接了
# vim /lnmp/web/memcachetest.php --在家目录下做一个测试页面,使用firefox访问这个页面,如果能显示This is a test!,则表示成功
<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
$mem->set('key', 'This is a memcache test!', 0, 60);
$val = $mem->get('key');
echo $val;
?>
测试memcache方法一
(开memcache显示,关闭memcache不能显示)
# vim /usr/local/php/etc/php.ini
;extension = "memcache.so" --前面加;符号注释来模拟关闭
# pkill fpm
# /usr/local/php/sbin/php-fpm -D -y /usr/local/php/etc/php-fpm.conf
--再使用这两句把php的fastcgi重启,使之生效
测试memcache方法二
关闭memcache的11211,上面的This is a test!就无法显示.打开就OK
-----------------
上面是安装完memcached后,可以让开发人员使用。
如果是象discuz这种开源论坛安装完后,我没有开发能力,如何让discuz使用memcache?
使用安装时的admin用户和密码登陆后台http://10.1.1.9:8000/admin.php
点全局--》性能优化--》内存优化
可以看到memcache是支持,但是关闭的
把关闭状态改成打开的方法为:
# vim /lnmp/web/config/config_global.php
25 $_config['memory']['memcache']['server'] = '127.0.0.1'; --把这个IP127.0.0.1配上(如果memcache在另一台机器上,就写它的IP)
保存后,再刷新后台的内存优化界面状态就变为打开了
################################################################################
把memcache换成redis
web
|
redis
|
mysql
笔记目录/program/lnmp_soft/
phpredis-2.2.7.tar.gz ----php连接redis的扩展包
redis-3.0.7.tar.gz ----redis主程序包
第一大步:让php支持redis扩展
# tar xf phpredis-2.2.7.tar.gz -C /usr/src/lnmp/
# cd /usr/src/lnmp/phpredis-2.2.7/
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config
# make ;make install
# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/ ----这里就会多了redis.so
imagick.so memcache.so opcache.a opcache.so redis.so
# vim /usr/local/php/etc/php.ini --加上redis.so的支持
extension = "redis.so"
# pkill fpm
# /usr/local/php/sbin/php-fpm -D -y /usr/local/php/etc/php-fpm.conf ----重启fpm
# /usr/local/php/bin/php -m |grep redis --可以看到redis,表示已经支持
redis
第二大步:
安装redis主程序包,并启动redis服务
# tar xf redis-3.0.7.tar.gz -C /usr/src/lnmp/
# cd /usr/src/lnmp/redis-3.0.7/
# make
# make install
# cp /usr/src/lnmp/redis-3.0.7/redis.conf /etc/ --拷贝配置文件模版
# vim /etc/redis.conf
daemonize yes --改为yes,表示运行成daemon模式
# redis-server /etc/redis.conf ----启动redis
# lsof -i:6379 --端口为6379
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 21373 root 4u IPv6 175620 0t0 TCP *:6379 (LISTEN)
redis-ser 21373 root 5u IPv4 175622 0t0 TCP *:6379 (LISTEN)
第三大步:
使用安装时的admin用户和密码登陆后台http://10.1.1.9:8000/admin.php
点全局--》性能优化--》内存优化
可以看到redis是支持,但是关闭的
把关闭状态改成打开的方法为:
# vim /lnmp/web/config/config_global.php
19 $_config['memory']['redis']['server'] = '127.0.0.1';
再回到web去刷新,就可以看到redis是支持并且打开状态了
=============================================================
补充三:
把单机lnmp分离成多机
你可以把nginx,php,memcache或redis,mysql分成四台服务器都可以
跟单机lnmp的区别在于:
1,php的编译如果用下面的参数,那么编译没什么区别,远程一样可以让php支持mysql
--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
2,在安装论坛时,mysql授权时要写php的IP
# grant all on discuz.* to 'discuzuser'@'PHP服务器IP' identified by '123';
# flush privileges;
3,在安装论坛的web页面,写mysql在哪里,要写mysql的IP加端口,而不是localhost
client
nginx
php(fastcgi) opcache
memcache或redis
mysql
nginx_proxy(反向代理)
squid或varnish squid或varnish
nginx_web nginx_web
php(fastcgi) php(fastcgi)
memcache或redis memcache或redis
mysql主 mysql从1 mysql从2
写 读 读
posted @ 2018-06-19 21:55  Sky-wings  阅读(175)  评论(0编辑  收藏  举报