sdxh0506 发表于 2018-12-25 06:39:27

Memcached实现Session共享

  一、memcached安装
  1. memcached安装和启动、查看进程
      安装扩展源 yum install -y epel-release
      安装软件、组件、工具包 yum install -y libevent memcached libmemcached
      启动 /etc/init.d/memcached start
      进程 ps aux |grep memcached
https://s5.运维网.com/wyfs02/M00/8E/2E/wKioL1i35hLSetwBAAATeUbz5Bc989.png
  
     解释:
     -d启动一个守护进程
     -p监听的端口,默认11211
     -u运行memcached用户
     -m 内存大小,单位MB
     -c并发连接数,默认1024
     -P pid文件
     -l监听的服务器IP地址
  

  2. 编辑配置文件/etc/sysconfig/memcached
      说明:配置文件中添加监听地址 -l 127.0.0.1
https://s1.运维网.com/wyfs02/M01/8E/31/wKiom1i35i6Tx7W9AAAL_pAEZE0599.png
https://s2.运维网.com/wyfs02/M01/8E/2E/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
  

https://s5.运维网.com/wyfs02/M00/8E/31/wKiom1i35mKAi1QWAAA4hemf4Nw274.png
  

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

  1. memcached登录
      telenet方式:Telnet 127.0.0.1 11211
https://s5.运维网.com/wyfs02/M02/8E/31/wKiom1i35nbRI1yPAAARUTPG3F0125.png
  

  2. memcached语法规则
      格式:
      \r\n\r\n
  

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

  3. 操作数据
  1) 存入和查看一条数据
        说明:键名为1;1表示键标记;80为过期时间;2为字节大小;回车输入2个字节的数据
https://s4.运维网.com/wyfs02/M01/8E/31/wKiom1i35o3DH0EDAAAKA0fAae4257.png
  

  2)替换一条数据
https://s1.运维网.com/wyfs02/M01/8E/2F/wKioL1i35pnwiw1vAAAOVPJDTOk839.png
  

  3) 删除一条数据
https://s5.运维网.com/wyfs02/M02/8E/2F/wKioL1i35qiQCO2GAAAFAb5vcd4909.png
  

  4. 查看chunk值
      命令:memcached-tool 127.0.0.1:11211 display
https://s5.运维网.com/wyfs02/M00/8E/31/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/attachment/forum/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
https://s3.运维网.com/wyfs02/M00/8E/31/wKiom1i35s3zejYaAAAPfIIX4dw520.png
  

  2. 编辑php配置文件/usr/local/php/etc/php.ini,指定扩展模块的目录extension_dir(默认)和模块文件,并重启查看是否加载/usr/local/php/bin/php -m
https://s4.运维网.com/wyfs02/M00/8E/2F/wKioL1i35vmRg9MIAAAvFV7Byf8345.png
  

https://s4.运维网.com/wyfs02/M00/8E/2F/wKioL1i35vnSgXgqAAAXYhuC2BA411.png
  

https://s5.运维网.com/wyfs02/M01/8E/31/wKiom1i35w6i82hgAAAKyQw1n1M520.png
  

  3. 编辑测试脚本1.php,并用/usr/local/php/bin/php测试与php的解析
  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=memcache
        php_value="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"
  、https://s3.运维网.com/wyfs02/M00/8E/2F/wKioL1i36IDBRPNPAAAWMiDBgz8248.png
  

  

  b. 编辑php测试脚本session.php,移至网站目录下/data/www/
      内容:
  

  c. 用curl或者浏览器访问session.php,获取返回的session值
      命令 curl -x127.0.0.1:80 172.16.111.195/session.php
https://s1.运维网.com/wyfs02/M01/8E/31/wKiom1i36JiggZPJAAAVv93R3os966.png
  

  

  d. telnet登录memcached服务器,查看本地保存的session信息与curl获取的一致
https://s4.运维网.com/wyfs02/M01/8E/31/wKiom1i36Kmx-7C8AAAh-3xyvEI435.png
  

  

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

https://s1.运维网.com/wyfs02/M02/8E/31/wKiom1i36PPz9AicAACIQqBiU0c243.png
  

  

  




页: [1]
查看完整版本: Memcached实现Session共享