一、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


 Memcached实现Session共享_第1张图片


二、memcached操作

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


1. memcached登录

    telenet方式:Telnet 127.0.0.1 11211

 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个字节的数据

 Memcached实现Session共享_第2张图片


2)替换一条数据

 Memcached实现Session共享_第3张图片


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/p_w_upload/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

 wKiom1i35s3zejYaAAAPfIIX4dw520.png

 


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

 

 Memcached实现Session共享_第4张图片


 Memcached实现Session共享_第5张图片


 wKiom1i35w6i82hgAAAKyQw1n1M520.png


3. 编辑测试脚本1.php,并用/usr/local/php/bin/php测试与php的解析

connect("localhost", 11211);

//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."
"; //替换数据 $mem->replace('key1', 'This is replace value', 0, 60); $val = $mem->get('key1'); echo "Get key1 value: " . $val . "
"; //保存数组数据 $arr = array('aaa', 'bbb', 'ccc', 'ddd'); $mem->set('key2', $arr, 0, 60); $val2 = $mem->get('key2'); echo "Get key2 value: "; print_r($val2); echo "
"; //删除数据 $mem->delete('key1'); $val = $mem->get('key1'); echo "Get key1 value: " . $val . "
"; //清除所有数据 $mem->flush(); $val2 = $mem->get('key2'); echo "Get key2 value: "; print_r($val2); echo "
"; //关闭连接 $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"

Memcached实现Session共享_第6张图片



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

    内容:


"; print $_SESSION[ 'TEST3' ]; print "

"; 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获取的一致

 Memcached实现Session共享_第7张图片



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

 Memcached实现Session共享_第8张图片