linux下memcached的安装

摘要:
系统映像和环境要求:1)有关适用于Windows系列和开发人员的相关教程,请参阅本文档1.0中的安装步骤,请参考本文档3.0.4中的安装步骤。对于Ubuntu Debian和其他系列,请参考本文中4.0安装步骤的注意事项:如果您已经有了phpmemcache这样的环境,请注意教程中的一些提示,以防止生产环境被覆盖,导致业务不可用。请在升级和重新编译环境之前备份环境!编译libmemcached时,GCC应高于4.2。

系统镜像及环境要求:

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 installgcc+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
yuminstallphp-devel,php-common,php-cli

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

2) 安装SASL相关环境

1
yuminstallcyrus-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
yuminstallzlib-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 installgcc+gcc-c++

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

1
yuminstallphp53 php53-devel

2) 安装SASL相关环境

1
yuminstallcyrus-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
yuminstallzlib-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-getinstallbuild-essential
apt-getinstallpkg-config

3)    安装php5, php5-dev

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

1
apt-getinstallphp5 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';        //databasename
  $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

免责声明:文章转载自《linux下memcached的安装》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇我的全栈之路-C语言基础之数据存储【Android实验】组件通信Intent下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

iOS使用shell脚本注入混淆内容

背景 公司需要做一系列的壳版本,壳版本如果内容雷同提交到App Store会有被拒绝的风险,其中有一种解决方案是在壳版本中注入混淆的代码,防止被苹果检测到内容太过雷同而导致审核被拒绝,本文是针对这个场景,使用shell脚本进行半自动批量添加和删除混淆代码。 shell实战的系列文章iOS使用shell脚本注入混淆内容iOS使用Shell脚本批量修改类名称i...

C#系统缓存全解析

系统缓存有什么好处呢?举个简单的例子,你想通过网页查询某些数据,而这些数据并非实时变化,或者变化的时间是有期限的。例如查询一些历史数据。那么每个用户每次查的数据都是一样的。如果不设置缓存,ASP.NET也会根据每个用户的请求重复查询n次,这就增加了不必要的开销。所以,可能的情况下尽量使用缓存,从内存中返回数据的速度始终比去数据库查的速度快,因而可以大大提供...

linux C之access函数(转-追梦的小鸟)

access():判断是否具有存取文件的权限 相关函数stat,open,chmod,chown,setuid,setgid表头文件#include<unistd.h>定义函数int access(const char * pathname, int mode);函数说明access()会检查是否可以读/写某一已存在的文件。参数mode有几种情...

glib

一、glib介绍 libc指C函数库,这是一个通称,而glibc是GNU实现的libc,至于glib是一组较高层的函数库,比如链表、Hash等,在linux中glib是建立在glibc之上的,qt的库就叫做qt,也是建立在glibc和其他一些基本库之上。 GLib是Gtk +库和Gnome的基础。GLib可以在多个平台下使用,比如Linux、Unix、Wi...

Linux vim 常用命令

命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim并创建名为filename的文件 文件命令 打开单个文件 vim file 同时打开多个文件 vim file1 file2 file3 ... 在vim窗...

经典的CSS代码(转)

Web开发技术每年都在革新,浏览器已逐渐支持CSS3特性,并且网站设计师和前端开发者普遍采用这种新技术进行设计与开发。但仍然有一些开发者迷恋着一些CSS2代码。 分享20段非常专业的CSS2/CSS3代码供大家使用,你可以把它们保存在IDE里、或者存储在CSS文档里,这些代码片段绝对会给你带来意外的惊喜。 1. CSS Resets 网络上关于CSS重置的...