爱生活

对每天的生活都要充满热情

memcached&php扩展安装

安装memcached

memcached存储的方式是key=>value的方式,即键值对的方式。
memcached是memcache的一个升级版,官方主页是memcached.org,可以直接到官方主页去下载tar包,现在最新的版本是1.4.24,我使用的环境为Centos7.0,已安装LNMP环境。

//解压&配置&编译&安装
tar -zxf memcached-1.4.24.tar.gz 
cd memcached-1.4.24
./configure --prefix=/usr/local/memcached
make && make install

安装时指定的路径是/usr/local/memcached目录,并没有在系统的搜索路径内产生可执行文件,为了可以在shell下直接运行memcached来操作,需要设置一个连接,就把它连接到/usr/sbin/目录下。

ln -s /usr/local/memcached/bin/memcached /usr/sbin/memcached

现在安装已经完成,尝试启动memcached

memcached -u root -d

-u :指定启动的用户;
-d:在后台运行;
-p :指定监听的端口号,缺省是11211;
-m :最大可用内存,单位是MB,缺省是64MB;
-c :软连接数量,缺省是1024;
-v:输出警告和错误信息;
-vv:打印客户端的请求和返回信息。

对memcached进行测试需要安装telnet,通过yum -y install telnet进行安装,安装完成后进行连接:

# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

出现如上的显示,则表示memcached已安装并连接成功,来测试一下:

# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set name 1 0 5
liang
STORED
get name
VALUE name 1 5
liang
END

set name 1 0 5:设置一个key为name的值,长度为5,标志为1,时长为永久(这个永久是相对而言的,memcached是存在于缓存当中,当断电后数据会丢失;同时,即使在不断电的情况下,当memcached被分配的内存页使用尽时,也可能会为了存储新的内容而将这个键值对删除掉。memcached使用的内存页置换算法是LRU,即Least Recent Used近期最少使用算法)。
get name:获取key=name的值。
quit:退出。

安装memcached的php扩展

要在php中使用memcached,就需要安装memcached的php扩展。memcached的php扩展分为两种,分别是memcache与memcached,我们选择安装的是memcached,它依赖于libmemcached,所以需要先安装libmemcached。

为什么选择memcached扩展
在上一节安装的是memcached-1.4.24版本,memcached在1.2.4版本及以后增加了CAS(Check And Set)协议,用来处理同一个key的多进程并发处理问题。而memcache扩展并不支持CAS,所以选择memcached扩展。

网站
pecl.php.net是php的扩展包网站,memcached扩展包可以在上面找到,我用的是memcached-2.2.0。
libmemcached包在这个网站上并没有找到,可以百度搜索一下就能找到,我用的是libmemcached-1.0.18。

安装步骤

//先安装libmemcached
tar -zxf libmemcached-1.0.18.tar.gz 
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached
make && make install

下面安装memcached-2.2.0扩展包,要注意的是解压后的目录中并没有configure文件,需要先切入解压后的目录,然后执行/usr/local/php/bin/phpize(/usr/local/php是我的系统php的安装目录)来生成configure文件。
在配置时,需要指定几个参数:
-with-php-config=/usr/local/php/bin/php-config:指定php的配置路径;
-with-libmemcached-path=/usr/local/libmemcached:指定libmemcached路径;
–disable-memcached-sasl:跳过验证,不加这个参数的话在centos7中会报错误。

 tar -zxf memcached-2.2.0.tgz 
 cd memcached-2.2.0
 /usr/local/php/bin/phpize 
 ./configure -enable-memcached -with-php-config=/usr/local/php/bin/php-config -with-libmemcached-dir=/usr/local/libmemcached/ -prefix=/usr/local/phpmemcached --disable-memcached-sasl
make && make install

编译安装完成后,还需要修改一下php的配置文件php.ini,在里面加上一行extension = “memcached.so”
写个测试例子测试一下(vi /home/wwwroot/default/test.php):

<?php
$mem = new Memcached();
$mem->addServer('127.0.0.1',11211);
$mem->set('company','inspur BJ');
$var = $mem->get('company');
echo $var;

运行如下:

[root@localhost default]# php test.php 
inspur BJ

注意的问题

  1. memcached单个进程最大使用的内存为2G,要使用更多内存,可以分多个端口启动多个memcached进程;
  2. 最大的数据过期时间是30天,即使设置为永久也会在这个时间过期,常量REALTIME_MAXDELTA 60*60*24*40控制;
  3. 最大key长度为250字节,大于该长度则无法存储,常量KEY_MAX_LENGTH 250控制;
  4. 单个item的最大数据是1MB,超过1MB的数据不存储,常量POWER_BLOCK 1048576控制,它是默认的slab大小;
  5. 参数-c num用来指定最大同时连接,缺省为1024
  6. 查看memcached工作状态,使用stats
  7. 禁用LRU机制,在启动时添加-M参数,禁用后在分配的内存耗尽时会返回错误,不建议禁用;
  8. 想要使用线程模式,启动memcached时需要加上-t num参数来指定需要支持的线程数量,缺省是4
  9. 参数-f num可以设置chunk size growth factory(块尺寸增长因子),缺省值为1.25,启动时增加-f 2 -vv参数可以看到设置为2的信息显示。
阅读更多
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/ljl890705/article/details/49965851
个人分类: 杂记
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

memcached&php扩展安装

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭