Memcached简介
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。
Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。
Memcached是一种基于内存的key-value存储是一个存储键值对的Hashmap,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。
Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。本质上,它是一个简洁的key-value存储系统。
一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
特征
memcached作为高速运行的分布式缓存服务器,具有以下的特点。
- 协议简单
- 基于libevent的事件处理
- 内置内存存储方式
- memcached不互相通信的分布式
Memcached安装
以centos7为例进行安装
yum install libevent libevent-devel -y #安装
Libevent:是一个用C语言编写的、轻量级的开源高性能事件通知库
安装Memcached
yum安装
yum install memcached libmemcached -y #yum安装Memcached
Memcached运行
memcached -h #帮助命令
常用选项:
| 选项 | 作用 |
|---|---|
| -d | 启动一个守护进程 |
| -m | 分配给Memcached使用内存,单位是MB |
| -u | 运行Memcached的用户 |
| -l | 监听的服务器IP地址,可以有多个 |
| -p | 设置服务的监听端口,最好是1024以上 |
| -c | 最大并发连接数,1024 |
| -P | 设置保存Memcache的pid文件 |
| -v/vv/vvv | 正常/详细/更详细打印客户端命令 |
创建用户
Memcached不能用root用户使用参数运行,所以我们需要再创建一个普通用户
useradd memcache #创建用户passwd memcache #设置密码
启动服务
memcached -p 11211 -u memcache -m 64m -vv #前台启动memcachedmemcached -p 11211 -u memcache -m 64m -d #后台启动memcached

Memcached连接
我们可以通过 telnet 命令并指定主机ip和端口来连接 Memcached 服务。
yum install -y telnet #安装telnet
注意:telnet是明文传输哦!
telnet 127.0.0.1 11211Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.set foo 0 0 3 #保存命令bar #数据STORED #结果get foo #取得命令VALUE foo 0 3 #数据bar #数据END #结束行quit #退出
Ctrl+C和Ctrl+D都无法退出哦!
PHP使用Memcached服务
在前面章节中我们已经介绍了如何安装 Memcached 服务,接下来我们为大家介绍 PHP 如何使用 Memcached 服务。
yum install php php-devel zlib-devel gcc -y #安装PHP和一些必要的库wget http://pecl.php.net/get/memcache-2.2.7.tgz #获取最新稳定包tar -zxf memcache-2.2.7.tgz #解压安装cd memcache-2.2.7 #进入文件夹phpize #安装php的扩展文件工具./configure --with-php-config=/usr/bin/php-config && make && make install #编译安装#Installing shared extensions: /usr/lib64/php/modules/#安装完成的扩展路径
phpize

最后编译完成界面

扩展路径

修改配置文件,添加扩展
vim /etc/php.ini #进入php.ini配置文件

检查扩展是否添加成功:
php -m|grep memcachevim 1.php #创建php文件 随意添加内容php 1.php


Memcached中存储session
systemctl start httpd #启动apachevim /etc/php.ini #在lamp/lnmp下进行,至少有个apache或者nginx#编辑php.ini添加两行session.save_handler = memcachesession.save_path = "tcp://192.168.218.150"

或者httpd.conf中对应的虚拟主机中添加
php_value session.save_handler "memcache"php_value session.save_path "tcp://192.168.218.150"
或者php-fpm.conf对应的pool中添加
php_value[session.save_handler] = memcachephp_value[session.save_path] = "tcp://192.168.218.150"
配置session.php
cd /var/www/html #进入文件夹vim session.php #创建文件<?phpsession_start();$_SESSION['name']='test';echo session_id()."<br/>";echo $_SESSION['name'];?>php session.php start #启动php文件

或者从浏览器打开

