ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Memcache介绍

2019-04-08 10:45:21  阅读:293  来源: 互联网

标签:介绍 application memcache Memcache 172.16 1.21 php memcached


Memcached介绍

Memcached是一款开源的、高性能的纯内存缓存服务软件。Mem是内存的意思,cache是缓存的意思,d是daemon的意思

Memcached在企业中的应用场景

优点:
1.对于用户来讲,用户访问网站更快了,体验更好了。
2.对网站来说,数据库压力降低了。只有当内存没有数据时才会去请求数据库。第一次写入的数据也会请求数据库。一般公司没有预热,只有当用户读取过数据库才会放到Memcached中。
3.提升了网站的并发访问,减少服务器数量。


memcache相关参数说明

-p <num>      指定监听端口 (default: 11211)
-l <addr>     绑定监听的网卡 
-d            后台运行
-u <username> 指定用户
-m <num>      分配内存大小 (default: 64 MB)
-c <num>      并发访问连接数 (default: 1024) 
-P <file>     指定pid文件存放路径,需要与-d一起使用
    memcache启动文件
[root@cache01 ~]# cat /usr/lib/systemd/system/memcached.service 
[Unit]  -----> 表示这个服务的介绍与一些依赖关系统
Description=Memcached
Before=httpd.service
After=network.target
[Service]----->表示这个服务怎么开启一些相关的参数 
Type=simple
EnvironmentFile=-/etc/sysconfig/memcached
ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS

[Install]----->安装
WantedBy=multi-user.target

Memcache服务部署

第一个里程:安装memcached服务端
yum -y install memcached
第二个里程:修改配置文件,并启动服务
[root@cache01 ~]# vim /etc/sysconfig/memcached 
PORT="11211"     --->端口号
USER="memcached" --->以什么用户运行
MAXCONN="1024"   --->最大的连接数
CACHESIZE="64"   --->缓存大小(MB)
OPTIONS="-l 172.16.1.21"   ---> 其它的参数
systemctl start memcached
第三个里程:利用nc或telnet进行memcache测试
telnet方式
[root@cache01 ~]# telnet 172.16.1.21 11211
Trying 172.16.1.21...
Connected to 172.16.1.21.
Escape character is '^]'.
set liu1 0 0 10   ----> 写入数据
oldboyssss     
STORED
get liu1          ----> 读取数据
VALUE liu1 0 10
oldboyssss
END
delete liu1       ----> 删除数据
DELETED
nc方式
#写入数据
[root@cache01 ~]# printf "set oldboy 0 0 10\r\noldboy1231\r\n"|nc 172.16.1.21 1121
1STORED
#读取数据
[root@cache01 ~]# printf "get oldboy\r\n"|nc 172.16.1.21 11211
VALUE oldboy 0 10
oldboy1231
END
#删除数据
[root@cache01 ~]# printf "delete oldboy\r\n"|nc 172.16.1.21 11211
DELETED

命令语法格式说明

set              key   0        0           10 \r\n oldboy0987 \r\n 
<command name>  <key> <flags> <exptime> <bytes>\r\n <data block>\r\n
- <flags> 是在取回内容时,与数据和发送块一同保存服务器上的任意16位无符号整型(用十进制来书写)。客户端可以用它作为“位域”来存储一些特定的信息;它对服务器是不透明的。
- <exptime> 是终止时间。如果为0,该项永不过期(虽然它可能被删除,以便为其他缓存项目腾出位置)。如果非0(Unix时间戳或当前时刻的秒偏移),到达终止时间后,客户端无法再获得这项内容。
- <bytes> 是随后的数据区块的字节长度,不包括用于分页的“\r\n”。它可以是0(这时后面跟随一个空的数据区块)。
<data block>\r\n
- <data block> 是大段的8位数据,其长度由前面的命令行中的<bytes>指定。

\n 换行且光标移至行首
\r 光标移至行首,但不换行
第四个里程:在web服务器上部署memcache客户端
下载地址:http://pecl.php.net/package/memcached
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配置文件,在最后一行添加,并重启php服务
sed -i '$a extension=memcache.so' /application/php/lib/php.ini
pkill php    #killall php-fpm
/application/php/sbin/php-fpm -t
/application/php/sbin/php-fpm
/application/php/bin/php -m|grep memcache
第六个里程:添加代码,并在浏览器上进行访问
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
服务器上测试
[root@cache01 ~]# 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/
浏览器访问http://blog.etiantian.org/memadmin



根据自己需求定义

利用Memcached缓存wordpress数据库

第一步:下面memcached缓存配置文件
wordpress缓存数据缓存到memcached中:https://cn.wordpress.org/plugins/memcached/
wordpress缓存数据缓存到redis中:https://cn.wordpress.org/plugins/redis-cache/ 
第二步:将下面好的配置文件放到wordprss下的wp-content中
unzip memcached.3.0.1.zip
cd memcached
mv object-cache.php /application/nginx/html/blog/wp-conten
t/
wordpress会自动检查wp-content下面是否有object-cache.php
使用memcached缓存wordpress博文数据
第三步:修改object-cache.php配置文件,将array('127.0.0.1','');为memcached服务器ip地址
[root@web01 wp-content]# grep -n "172" object-cache.php 
418:    $buckets =array('172.16.1.21:11211');

第四步:进行测试

Memcache session会话共享的实现

方法1:通过程序实现,web01只需要往memcahce写session,web02从memcahce读session,当作普通数据读写(更具有通用性)

方法2:通过php的配置文件,php默认将session存储在文件中,修改为存储在memcached中
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函数

标签:介绍,application,memcache,Memcache,172.16,1.21,php,memcached
来源: https://www.cnblogs.com/yjiu1990/p/10668966.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有