Memcached安装及php连接配置

/ Linux服务安装搭建 / 没有评论 / 1263浏览

环境准备

yum install libevent-devel -y

下载包

 wget http://www.memcached.org/files/memcached-1.5.8.tar.gz
 tar xf memcached-1.5.8.tar.gz 
 cd memcached-1.5.8/

安装检验

 ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/lib
 make &&make install 

开启

 /usr/local/memcached/bin/memcached -m 16m -c 2048 -u root -p 11211 -d 
 
cp memcached /etc/init.d/memcached
chmod a+x /etc/init.d/memcached

参数

-m:给多大内存、 -c 最大并发多少用户、 -u:以什么用户运行、 -p:启动的端口(默认11211)、 -d:daemon(守护进程运行)

检验

 netstat -lntup 

nc检验

yum install -y nc 

[root@pa2 ~]# printf "set key007 0 3 10\r\nlijinghua0\r\n"|nc 127.0.0.1 11211           #这里的3代表超时时间为3秒 /n后面代表值的位数
STORED
[root@pa2 ~]# printf "get key007\r\n"|nc 127.0.0.1 11211
VALUE key007 0 10
lijinghua0
END

telnet检验

[root@pa2 etc]# telnet 58.87.104.82 11211
Trying 58.87.104.82...
Connected to 58.87.104.82.
Escape character is '^]'.
set k1 0 0 6
oldboy
STORED

ERROR
get k1
VALUE k1 0 6
oldboy
END

quit #退出

MySQL与Memcached操作命令对比

MySQL的insert语句 ======== Memcached的set命令 MySQL的select语句 ======== Memcached的get命令 MySQL的delete语句 ======== Memcached的delete命令

php配置连接memcached

配置文件更改

[root@pa2 etc]# tail -5 php.ini 
extension=memcached.so
session.save_handler = memcache
session.save_path = "tcp://58.87.104.82:11211"

基础依赖

 wget  https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
 tar -zxf libmemcached-1.0.18.tar.gz 
 cd libmemcached-1.0.18/
 ./configure --prefix=/usr/local/libmemcached --with-memcached  
 /usr/local/php/sbin/php-fpm -m
 /usr/local/php/sbin/php-fpm -i

php_memcached模块

wget http://pecl.php.net/get/memcached-2.2.0.tgz

tar -zxf memcached-2.2.0.tgz

phpize

 /usr/local/php/bin/phpize
 ./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached
 make && make install 

配置文件里面添加扩展及连接memcache

vim php.ini

;添加memcache依赖
;extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/"
extension=redis.so   

;php配置连接memcache
 ;session.save_handler = files
  session.save_handler = memcache
 ;session.save_path = "/tmp"
   session.save_path = "tcp://58.87.104.82:11211"
#多个环境下重启时要指定配置文件 例如:
/www/web/php/sbin/php-fpm -c /www/web/php/etc/php.ini

phpinfo查看页

session.save_handler	memcache	memcache
session.save_path	tcp://58.87.104.82:11211	tcp://58.87.104.82:11211

alt

memadmin了解一下

Memcached在集群中的session共享存储的优缺点

优点:

  1. 读写速度上会比普通files速度快很多
  2. 可以解决多个服务器共用session的难题

缺点:

  1. session数据都保存在memory中,持久化方面有所欠缺,但对session数据来说不是问题。
  2. 一般是单台,如果部署多台,多台之间无法数据同步。通过hash算法分配依然有session丢失的问题。 对于以上的缺点,解决思路如下:
  3. 可以用其他的持久化系统存储session,例如:Redis、ttserver来替代Memcached。
  4. 高性能高并发场景,cookies效率比session要好很多,因此,大网站都会用cookies解决会话共享问题。
  5. 有初级运维网友通过牺牲LB的负载均衡的策略实现,例如:lvs-p、nginx ip_hash等,但这些都不是好的方法

Memcached状态信息详细说明

点我下载