美文网首页
LNMP下配置Memcached

LNMP下配置Memcached

作者: 非夜 | 来源:发表于2017-01-21 18:54 被阅读226次
    写在前面
    • Memcached不同于Memcache,二者有区别,前者性能优于后者,同时在配置PHP时候也不同
    • 相对于RedisMongodbMemcached缓存技术并不过时,各有优劣
    • 注意实在Nginx下,非ApacheMemcached在两者中配置也不同
    • 配置均为源码编译安装,并非yum
    • 服务器环境:Nginx1.8.0PHP5.4

    详细过程
    • 首先确保服务器下安装了ftp服务,推荐vsftpd
    • ftp客户端新建文件夹soft,分别下载:memcached-1.4.34.tar.gzlibevent-2.0.22-stable.tar.gz,可去官网下载最新的二者的包,放在soft文件下,同时上传至服务器 [root@VM_107_98_centos /]#目录下
    • 安装libevent
      进入压缩包所在目录
      # cd /soft/
      解压
      # tar xzfv libevent-2.0.22-stable.tar.gz
      进入目录
      # cd libevent-2.0.22-stable
      编译安装
      # ./configure
      # make
      # make install
    • 安装memcached
      进入压缩包所在目录
      # cd /soft/
      解压
      # tar xzfv memcached-1.4.34.tar.gz
      进入目录
      # cd memcached-1.4.34
      编译,安装
      # ./configure
      # make
      # make install
    • 启动memcached服务
      # /usr/local/bin/memcached -d -m 64 -u root -p 11211 -P /tmp/memcached.pid
      此时必然报错如下:
      error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
      加载路径出错了,用下面的命令查看下它是从哪里加载的(注意此步骤需要在memcached-1.4.34目录下执行)
      # LD_DEBUG=libs ./memcached -v 2>&1 > /dev/null | less
      截取部分输出
      6394: trying file=/lib64/tls/x86_64/libevent-2.0.so.5
      6394: trying file=/lib64/tls/libevent-2.0.so.5
      6394: trying file=/lib64/x86_64/libevent-2.0.so.5
      6394: trying file=/lib64/libevent-2.0.so.5
      配置指向路径(此步骤很重要,注意跟上面最后一个是对应的)
      # ln -s /usr/local/lib/libevent-2.0.so.5 /lib64/libevent-2.0.so.5
      再次执行启动Memcached服务,可以启动成功
      # /usr/local/bin/memcached -d -m 64 -u root -p 11211 -P
      测试通信是否正常
      # telnet 127.0.0.1 11211
      输出如下
      Trying 127.0.0.1...
      Connected to 127.0.0.1.
      Escape character is '^]'.
      说明启动成功,Ctrl + ]然后quit退出 telnet
    • 安装完成memcached后会自动在/usr/local/php5.4/lib/php/extensions/no-debug-non-zts-20100525目录下生成memcached.so,检查下php.iniphp的拓展路径是否配置,是否配置正确,正确的如下
      extension_dir = "/usr/local/php5.4/lib/php/extensions/no-debug-non-zts-20100525/"
      extension = "imagick.so"
      extension = "memcached.so"
    • 重启php-fpmNginx服务器需要重启php-fpm
    • 查看是否配置成功Memcached模块,成功如下

    memcached.png

    PHP进行测试
    • 简单测试源码

      <?php
       $m = new Memcached();
       // 传入一台服务器
       $m->addServer('127.0.0.1','11211');
       // 传入多台服务器
       // $servers = array(
       //     array('127.0.0.1','11211'),
       //     array('127.0.0.2','11211')
       // );
      // $m->addServers($servers);
      // 查看一下运行状态
      echo $m->getResultCode();
      // 首先定义要存入缓存的数组
      $data = array(
          'key1'=>'value1',
          'key2'=>'value2'
      );
      //  * setMulti()
      //  * 第一个参数代表传入的数组,第二个参数代表生效时间,0代表永
      $m->setMulti($data,30);
      //定义获取缓存的key值得数组
      $get = array('key1','key2');
      /*
       * getMulti()
       * 传入需要获取缓存的key值
      */
      $result = $m->getMulti($get);
      var_dump($result);
      ?>
      
    • 更多MemcachedPHP操作请自行Google or Baidu

    总结
    • 过程全记录,相比网络现存教程,更完整,更直白
    • 接下来是RedisMongodb

    相关文章

      网友评论

          本文标题:LNMP下配置Memcached

          本文链接:https://www.haomeiwen.com/subject/sohnbttx.html