• linux下memcached的安装


    系统镜像及环境要求:

    1) 适用于windows系列版本及开发者的相关教程  请参考本文1.0开始安装步骤

    2)  Centos 6系列及Aliyun Linux 6系列以上版本 请参考本文2.0开始安装步骤

    3)  Centos 5系列及Aliyun Linux 5系列版本,请参考本文3.0开始安装步骤

    4)  Ubuntu Debian等系列版本,请参考本文4.0安装步骤

    注意事项:如您已经有php memcache等环境,请注意教程中的一些提示,以免生产环境被覆盖,导致业务不可用,在升级及再编译环境前请做好环境备份!

    1.0 安装步骤

    如果采用标准的php memcached扩展不能成功搭建,可以考虑换成手工拼包的形式来访问OCS,连接方式请参考如下链接,示例代码非常简单,与php memcached的区别就是仅支持主流接口,需自己补充某些特定接口,安装及使用方法如下:

    https://github.com/ronnywang/PHPMemcacheSASL

    2.0 安装步骤

    Centos及 Aliyun Linux 6系列版本

    首先需要确认是否安装了gcc-c++等组件可以使用如没有请执行,

    1
    yum install gcc+gcc-c++

    使用gcc –v查看版本是否为4.2(含)以上 【必须要安装GCC  GCC要大于等于4.2】

    1)    rpm –qa | grep php 查看系统中是否有PHP环境,如果没有则安装之;如果有PHP则不要安装。建议使用php5.3【含】以上版本PHP5.2部分版本系列源代码会有zend_parse_parameters_none函数会出错,如需使用请参照php官方相关文档【包含源码编译的PHP】

    1
    yuminstall php-devel,php-common,php-cli

    【如是源代码编译,请按照官方php编译升级的办法进行】

    2) 安装SASL相关环境

    1
    yuminstall cyrus-sasl-plain cyrus-sasl  cyrus-sasl-devel  cyrus-sasl-lib

    【请先检测下是否有已安装了这些包,如有则不需要安装】

    3) 安装源码包libmemcached 【推荐版本libmemcached-1.0.16】

    请先检测下是否有已安装了这些包【包含源码包】如有则不需要安装

    1
    2
    3
    4
    5
    6
    7
    wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz
    tarzxvf libmemcached-1.0.16.tar.gz
    cdlibmemcached-1.0.16
    ./configure--prefix=/usr/local/libmemcached--enable-sasl
    make
    makeinstall
    cd..

    4) 安装源码包memcached 【推荐版本为memcached-2.2.0】

    安装MEMCACHED前需要确认是否有zlib-devel包没有需要执行

    1
    yuminstall zlib-devel

    请先检测下是否有已安装了memcached客户端包【包含源码包】如有则不需要安装,但需要重新编译增加-enable-memcached-sasl这个扩展

    1
    2
    3
    4
    5
    6
    7
    wget http://pecl.php.net/get/memcached-2.2.0.tgz
    tarzxvf memcached-2.2.0.tgz
    cdmemcached-2.2.0
    phpize(如果系统中有两套PHP环境,需绝对路径调用该命令/usr/bin/phpize,该路径为使用OCS的PHP环境路径)
    ./configure--with-libmemcached-dir=/usr/local/libmemcached--enable-memcached-sasl(注意这个参数)
    make
    makeinstall

    最后修改php.ini文件(locate找该文件,如果系统中有两套PHP环境,需找到使用OCS的PHP环境路径,对应修改之),增加

    1
    2
    extension=memcached.so
    memcached.use_sasl = 1

    依赖 :

    Memcached 2.2.0扩展必须使用libmemcached 1.0.x的库,低于1.0的库不再能够成功编译。编译 libmemcached时GCC要求在4.2以上。

    使用该页面最后的测试代码测试下是否环境部署成功,请修改代码中相应的地址 端口 用户名及密码

    3.0 安装步骤

    Centos及 Aliyun Linux 5系列版本 【64位版本】

    首先需要确认是否安装了gcc-c++等组件如没有请执行

    1
    yum install gcc+gcc-c++

    1)    rpm –qa | grep php 查看系统中是否有PHP环境,如果没有则安装之;如果有PHP则不要安装!建议使用php5.3【含】以上版本PHP5.2部分版本系列源代码会有zend_parse_parameters_none函数会出错,如需使用请参照php官方相关文档【包含源码编译的PHP】

    1
    yuminstall php53 php53-devel

    2) 安装SASL相关环境

    1
    yuminstall cyrus-sasl-plain cyrus-sasl  cyrus-sasl-devel  cyrus-sasl-lib

    3) 安装源码包libmemcached  【推荐版本libmemcached1.0.2】

    请先检测下是否有已安装了这些包【包含源码包】如有则不需要安装

    1
    2
    3
    4
    5
    6
    7
    wget http://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz
    tar-zxvf libmemcached-1.0.16.tar.gzcd libmemcached-1.0.16
    cdlibmemcached-1.0.16
    ./configure--prefix=/usr/local/libmemcached--enable-sasl
    make
    makeinstall
    cd.. 

    4)    安装源码包memcached 【推荐版本memcached2.0】

    安装MEMCACHED前需要确认是否有zlib-devel包没有需要执行

    1
    yuminstall zlib-devel

    请先检测下是否有已安装了memcached客户端包【包含源码包】如有则不需要安装,但需要重新编译增加-enable-memcached-sasl这个扩展

    1
    2
    3
    4
    5
    6
    7
    wget http://pecl.php.net/get/memcached-2.2.0.tgz
    tar-zxvf memcached-2.0.0.tgz
    cdmemcached-2.0.0
    phpize(如果系统中有两套PHP环境,需绝对路径调用该命令/usr/bin/phpize,该路径为使用OCS的PHP环境路径,请在memcached源码目录内执行phpize)
    ./configure--with-libmemcached-dir=/usr/local/libmemcached--enable-memcached-sasl(注意这个参数)
    make
    makeinstal

    最后修改php.ini文件(locate找该文件,yum安装的一般在/etc/php.ini 如果系统中有两套PHP环境,需找到使用OCS的PHP环境路径,对应修改之),增加

    1
    2
    extension=memcached.so
    memcached.use_sasl = 1

    执行php –m |grep memcached 如显结果有 memcache 表示环境已支持memcache

    使用该页面最后的测试代码测试下是否环境部署成功,请修改代码中相应的地址 端口 用户名及密码

    4.0  安装步骤 

    1)    变更ubuntu源

    方案一: vim /etc/apt/source.list

    在最前面添加一下内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    deb http://mirrors.aliyun.com/ubuntu/precise main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/precise-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/precise-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/precise-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/precise-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/precise main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/precise-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/precise-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/precise-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/precise-backports main restricted universe multiverse
    apt-get update//更新一下列表

    方案二: 通过wget http://oss.aliyuncs.com/aliyunecs/update_source.tgz 下载update_source的压缩包 解压后予执行权限 chmod 777 文件名 ,然后执行该脚本进行自动变更源操作

    2)   通过ape-get配置GCC,G++

    首先需要使用dpkg –s安装包名 【例如 dpkg –s gcc】确认是否安装了gcc-c++等组件如没有请执行

    1
    2
    3
    apt-get build-depgcc
    apt-getinstall build-essential
    apt-getinstall pkg-config

    3)    安装php5, php5-dev

    首先需要使用dpkg –s安装包名 【例如 dpkg –s php】确认是否安装了php等组件如没有请执行

    1
    apt-getinstall php5 php5-dev  【同时会自动安装php5-cli和php5-common】

    4)    安装配置sasl支持

    首先需要使用dpkg –s安装包名 【例如 dpkg –s libsasl2】确认是否安装了libsasl2 cloog-ppl等组件如没有请执行

    1
    2
    apt-getinstall  libsasl2-dev cloog-ppl
    cd/usr/local/src

    5)    安装指定版本的libmemcache

    请先检测下是否有已安装了这些包【包含源码包】如有则不需要安装

    1
    2
    3
    4
    5
    6
    7
    wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz
    tar-zxvf libmemcached-1.0.16.tar.gz
    cdlibmemcached-1.0.16
    ./configure--prefix=/usr/local/libmemcached
    make
    makeinstall
    cd..

    6)    安装指定版本的memcached

    请先检测下是否有已安装了memcached客户端包【包含源码包】如有则不需要安装,但需要重新编译增加-enable-memcached-sasl这个扩展

    1
    2
    3
    4
    5
    6
    7
    wget http://pecl.php.net/get/memcached-2.2.0.tgz
    tarzxvf memcached-2.2.0.tgz
    cdmemcached-2.2.0
    phpize5
    ./configure--with-libmemcached-dir=/usr/local/libmemcached--enable-memcached-sasl
    make
    makeinstall

    7)    配置php支持memcached,然后测试

    1
    2
    echo"extension=memcached.so" >>/etc/php5/conf.d/pdo.ini
    echo"memcached.use_sasl = 1" >>/etc/php5/conf.d/pdo.ini

    php -m |grep mem

    memcached 【显示出该组件代表安装完成】

    配置完毕

     

    代码示例如下

    1、示例1:最基本的连接OCS及set/get操作:

    1
    2
    3
    4
    5
    6
    7
    8
    $connect = new Memcached; //声明一个新的memcached链接
    $connect->setOption(Memcached::OPT_COMPRESSION,false); //关闭压缩功能
    $connect->setOption(Memcached::OPT_BINARY_PROTOCOL,true); //使用binary二进制协议
    $connect->addServer('aaaaaaaaaa.m.yyyyyyyyyyy.ocs.aliyuncs.com', 11211);//添加OCS实例地址及端口号
    $connect->setSaslAuthData('aaaaaaaaaa, 'password');//设置OCS帐号密码进行鉴权,如已开启免密码功能,则无需此步骤
    $connect->set("hello","world");
    echo'hello: ',$connect->get("hello");
    $connect->quit();

    2、示例2:在OCS中缓存一个数组

    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
    $connect= new Memcached;//声明一个新的memcached链接
    $connect->setOption(Memcached::OPT_COMPRESSION,false); //关闭压缩功能
    $connect->setOption(Memcached::OPT_BINARY_PROTOCOL,true);//使用binary二进制协议
    $connect->addServer('xxxxxxxx.m.yyyyyyyy.ocs.aliyuncs.com', 11211);//添加OCS实例地址及端口号
    $connect->setSaslAuthData('xxxxxxxx','bbbbbbbb');//设置OCS帐号密码进行鉴权,如已开启免密码功能,则无需此步骤。
    $user = array(
        "name"=> "ocs",
        "age"=> 1,
        "sex"=> "male"
    );//声明一组数组 
    $expire = 60;//设置过期时间
    test($connect->set('your_name',$user,$expire),true, 'Set cache failed');
    if($connect->get('your_name')){
    $result =$connect->get('your_name');
    }else{
    echo"Return code:", $connect->getResultCode();
    echo"Retucn Message:", $connect->getResultMessage ();//如出现错误,解析出返回码
    $result=" ";
    }
    print_r($result);
    $connect->quit();
     
    functiontest($val, $expect, $msg)
    {
        if($val!= $expect) throw new Exception($msg);
    }

     3、示例3:OCS与MySQL数据库结合使用的例子

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    $connect = new Memcached;//声明一个新的memcached链接
    $connect->setOption(Memcached::OPT_COMPRESSION,false);//关闭压缩功能
    $connect->setOption(Memcached::OPT_BINARY_PROTOCOL,true);//使用binary二进制协议
    $connect->addServer('xxxxxx.m.yyyyyyyy.ocs.aliyuncs.com', 11211);//添加实例地址  端口号
    $connect->setSaslAuthData('xxxxxx','my_passwd');//设置OCS帐号密码进行鉴权,如已开启免密码功能,则无需此步骤
    $user = array(
       "name"=> "ocs",
       "age" => 1,
       "sex" => "male"
    );//定义一组数组
      
    if($connect->get('your_name'))
    {
      $result =$connect->get('your_name');
      print_r($result);
      echo"Found in OCS, get data from OCS";//如果获取到数据,则打印此数据来源于OCS
      exit
    }
    else
    {
      echo"Return code:", $connect->getResultCode();
      echo"Retucn Message:", $connect->getResultMessage ();//抛出code返回码
      $db_host='zzzzzz.mysql.rds.aliyuncs.com';//数据库地址
      $db_name='my_db';        //database name
      $db_username='db_user';   //数据库用户名
      $db_password='db_passwd';//数据库用户密码
      $connection=mysql_connect($db_host,$db_username,$db_password);
      if(!mysql_select_db($db_name, $connection))
      {
        echo'Could not select database';//数据库连接不成功则抛出错误信息
        exit;
      }
      $sql ="SELECT name,age,sex FROM test1 WHERE name = 'ocs'";
      $result = mysql_query($sql, $connection);
      while($row = mysql_fetch_assoc($result))
      {
        $user = array(
          "name"=> $row["name"],
          "age" => $row["age"],
          "sex" => $row["sex"],
        );
        $expire = 5;//设置数据在缓存中的过期时间
        test($connect->set('your_name',$user,$expire),true, 'Set cache failed'); //写入OCS缓存
      }
      mysql_free_result($result);
      mysql_close($connection);
    }
    print_r($connect->get('your_name'));//打印出  获取到的数据
    echo"Not Found in OCS,get data from MySQL";//确认从数据库获取的数据
    $connect->quit();
      
    functiontest($val, $expect, $msg)
    {
      if($val!= $expect) throw new Exception($msg);
     
    }

    来源:https://help.aliyun.com/knowledge_detail/5974954.html

  • 相关阅读:
    Chrome 已经原生支持截图功能,还可以给节点截图!
    【promise| async/await】代码的控制力
    移动端各种分辨率手机屏幕----适配方法集锦
    Web Storage事件无法触发
    【php学习】图片处理三步走
    NYOJ 36 LCS(最长公共子序列)
    NYOJ 252 01串 普通dp
    NYOJ 18 The Triangle 填表法,普通dp
    NYOJ-171 聪明的kk 填表法 普通dp
    NYOJ17 最长单调递增子序列 线性dp
  • 原文地址:https://www.cnblogs.com/wepe/p/7424610.html
Copyright © 2020-2023  润新知