设为首页 收藏本站
查看: 1434|回复: 1

[经验分享] Memcached实现Session共享

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-3-3 11:18:42 | 显示全部楼层 |阅读模式
一、memcached安装
1. memcached安装和启动、查看进程
    安装扩展源 yum install -y epel-release
    安装软件、组件、工具包 yum install -y libevent memcached libmemcached
    启动 /etc/init.d/memcached start
    进程 ps aux |grep memcached
wKioL1i35hLSetwBAAATeUbz5Bc989.png

   解释:
   -d  启动一个守护进程
   -p  监听的端口,默认11211
   -u  运行memcached用户
   -m 内存大小,单位MB
   -c  并发连接数,默认1024
   -P pid文件
   -l  监听的服务器IP地址

2. 编辑配置文件/etc/sysconfig/memcached
    说明:配置文件中添加监听地址 -l 127.0.0.1
wKiom1i35i6Tx7W9AAAL_pAEZE0599.png

wKioL1i35jvhiV9mAAAWRinApVg449.png

3. 查看memcached运行状态
1) 使用memcached自带命令查看,一般优良的memcache,cmd_hits/cmd_get命中率大于80%
       命令 memcached-tool 127.0.0.1:11211 stats

2) 使用nc工具命令查看
       说明:需yum install -y nc
       命令 echo status |nc 127.0.0.1 11211

3) 使用libmemcached工具的命令查看
       命令 memstat --servers=127.0.0.1:11211

wKiom1i35mKAi1QWAAA4hemf4Nw274.png

二、memcached操作
     Memcached需在网站代码里指定,一般由开发人员操作,也可在测试和查看数据时,执行这些操作,一般用于php访问和存储

1. memcached登录
    telenet方式:Telnet 127.0.0.1 11211
wKiom1i35nbRI1yPAAARUTPG3F0125.png

2. memcached语法规则
    格式:
    <command name><key><flags><exptime><bytes> \r\n <data block> \r\n

   说明:
   1) \r\n在Windows下是Enter键
   2) <command name>可以是set(已存在则覆盖)、add(已存在则失败)、replace(不存在则失败)
   3) <key>
   4) <flags> 16位无符号十进制整数
   5) <exptime> 0表示永不过期,但可以被服务器算法LRU替换
   6) <bytes> 存储的字节数,空数据设为0
   7) <data block> 存储的数据

3. 操作数据
1) 存入和查看一条数据
      说明:键名为1;1表示键标记;80为过期时间;2为字节大小;回车输入2个字节的数据
wKiom1i35o3DH0EDAAAKA0fAae4257.png

2)替换一条数据
wKioL1i35pnwiw1vAAAOVPJDTOk839.png

3) 删除一条数据
wKioL1i35qiQCO2GAAAFAb5vcd4909.png

4. 查看chunk值
    命令:memcached-tool 127.0.0.1:11211 display
wKiom1i35rTTQj2YAAARzvvAuqM306.png


三、memcached连接实现共享
     Memcache作为php的一个扩展模块, 数据存到了memcached里面后,php通过memcache模块去和memcached服务交互

1. 下载和安装扩展工具memcache模块
    说明:源码编译时,需用到/usr/local/php/bin/phpize工具生成configure文件,如没有需yum install php-devel
    命令 wget http://www.apelearn.com/bbs/data ... /memcache-2.2.3.tgz
            tar -zxf memcache-2.2.3.tgz
            cd memcache-2.2.3
            /usr/local/php/bin/phpize
            ./configure --with-php-config=/usr/local/php/bin/php-config
            make;make install
wKiom1i35s3zejYaAAAPfIIX4dw520.png


2. 编辑php配置文件/usr/local/php/etc/php.ini,指定扩展模块的目录extension_dir(默认)和模块文件,并重启查看是否加载/usr/local/php/bin/php -m

wKioL1i35vmRg9MIAAAvFV7Byf8345.png

wKioL1i35vnSgXgqAAAXYhuC2BA411.png

wKiom1i35w6i82hgAAAKyQw1n1M520.png

3. 编辑测试脚本1.php,并用/usr/local/php/bin/php测试与php的解析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
//连接Memcache Memcache
$mem = new Memcache;
$mem->connect("localhost", 11211);

//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br>";

//替换数据
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";

//保存数组数据
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";

//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";

//清除所有数据
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";

//关闭连接
$mem->close();
?>



4. memcached实现session共享(lamp/lnmp环境下实现方式有多种)
  • /usr/local/php/etc/php.ini文件中添加

     session.save_handler = memcache
     session.save_path = "tcp://127.0.0.1:11211"

  • httpd.conf(apahce)虚拟主机配置文件添加

     php_value session.save_hander "memcache"
      php_value session.save_path "tcp://127.0.0.1:11211"  

  • php-fpm.conf(nginx)对应的pool中添加

     php_value[session.save_handler]=memcache
      php_value[session.save_path]="tcp:127.0.0.1:11211"

a. 编辑php配置文件vim /usr/local/php/etc/php.ini,填写session保存方式路径
    说明:如memcached服务器安装的远程机器上,在监听远程机器的IP
    内容:
     session.save_handler = memcache
     session.save_path = "tcp://127.0.0.1:11211"
wKioL1i36IDBRPNPAAAWMiDBgz8248.png


b. 编辑php测试脚本session.php,移至网站目录下/data/www/
    内容:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
session_start();
if (!isset($_SESSION[ 'TEST' ])) {
$_SESSION[ 'TEST' ] = time();
}
$_SESSION[ 'TEST3' ] = time();
print $_SESSION[ 'TEST' ];
print "<br><br>";
print $_SESSION[ 'TEST3' ];
print "<br><br>";
print session_id();
?>




c. 用curl或者浏览器访问session.php,获取返回的session值
    命令 curl -x127.0.0.1:80 172.16.111.195/session.php
wKiom1i36JiggZPJAAAVv93R3os966.png


d. telnet登录memcached服务器,查看本地保存的session信息与curl获取的一致
wKiom1i36Kmx-7C8AAAh-3xyvEI435.png


5. 通过phpinfo查看session相关配置

wKiom1i36PPz9AicAACIQqBiU0c243.png



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-349672-1-1.html 上篇帖子: memcache 安装部署(会话保持) 下篇帖子: 在Windows 64位下为PHP5.6.14安装memcache扩展
累计签到:181 天
连续签到:1 天
发表于 2017-3-17 16:06:33 | 显示全部楼层
学习了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表