作者:Scanz
更新版本:V1(20170114初版,待更新格式)
----------------------------------------------
传统Web架构的问题
许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示
随着数据量的增大、访问的集中,就会出现RDBMS的负担加重,数据库响应恶化,网站显示延迟
等重大影响
数据存储位置对比
性能
CPU缓存>内存>磁盘>数据库
价格
CPU缓存>内存>磁盘>数据库
memcached概述
memcached是高性能的分布式缓存服务器
用来集中缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的响应速度
首次访问:从RDBMS中取得数据保存到memcached
第二次后:从memcached中取得数据显示页面
memcached 支持许多平台
Linux
FreeBSD
Solaris(memcached 1.2.5以上版本)
Mac OS X
Windows
memcached 的特征
协议简单
基于libevent的事件处理
内置内存存储方式
内存管理机制
传统内存分配机制
使用完通过分配的内存后回收内存,这种方式容易产生内存碎片并降低操作系统对内存的管理效率
Slab Allocation
它按照预先规定的大小,将分配的内存分割成特定长度的内存块(chunk),再把尺子相同的内存块分成组(chunk集合),这些内存块不会释放,可以重复利用
Slab Allocation的主要术语
分配给Slab的内存空间默认是1MB,分配之后根据Slab定义的大小切分成chunk
Chunks是用于缓存记录的内存空间
Slab Class是特定大小的chunk组
将 100字节的数据缓存到128字节的chunk中,剩余的28字节就浪费了;-f指定增长因子来控制chunk的大小
memcacged 使用名为Least Recently Used (LRU)机制来分配空间
删除 “最近最少使用”的记录的机制
当memcacged 的内存空间不足时,从最近未被使用的记录中搜索,并将其空间分配给新的记录
-M参数禁止LRU功能,内存用尽时memcached会返回错误,不建议使用memcached -M -m 1024
安装事件库libevent
tar -xf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
sh configure
make && make install
echo "/usr/local/lib" > /etc/ld/so.conf.d/libevent.conf
ldconfig
ldconfig -v | grep --color libevent
安装memcached
tar -xf memcached-1.4.23.tar.tar
cd memcached-1.4.23
sh configure
make && make install
/usr/local/bin/memcacged -h
启动memcached
bin/memcached -p 11211 -l IP -u root -m 100 -c 200 -vvv -n 10 -f 2 -d
选项
-p 指定memcached监听的端口号,默认11211
-l memcached服务器的ip地址
-u memcached程序运行时使用的用户身份必须是root用户
-m 指定使用本机的多少物理内存数据,默认64M
-c memcached服务的最大连接数
-vvv 显示详细信息
-n chunk szie 的最小空间是多少,单位为字节
-f chunk szie 大小增长的倍增,默认1.25倍
-d 在后台启动
测试memcacged
telnet localhsot 11211
stats
memcached常用指令
add name 0 180 10 //变量不存在则添加
set name 0 180 10 //添加或替换变量
replace name 0 180 10 //替换
get name //读取变量
append name 0 180 10 //向变量中追加数据
delete name //删除变量
stats //查看状态
flush_all //清空所有
构建memcached服务
任务要求:
使用源码安装memcached软件
使用telnet测试memcached
对memceched进行增、删、改、查等操作
PHP+memcached介绍
部署LNMP
使用php页面,测试对memcached的读写操作
具体操作参考第三章节Nginx+FastCGI
PHP无法直接操作memcached
需要安装memcached扩展
安装PHP的memcache扩展
tar -xf memcache-2.2.5.tgz -C ./
cd memcache-2.2.5
/usr/local/php5/bin/phpize
.....
.....
./configure --with-php-config=/usr/local/php5/bin/php-config \
--enable-memcache
make && make install
/usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525 //提示模块存放目录memcache.so
vim /usr/local/php5/etc/php.ini
extension_dir="/usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525/" //加载模块
extension=memcache.so //加载模块
/etc/init.d/php-fpm reload
编写PHP页面
cat /usr/local/nginx/html/test.php
<?php
$memcache=new Memcache;
$memcache->connect('localhost',11211)or die ('could not connect!!')
$memcache->set('key','test');
$get_values=$memcache->get('key');
echo $get_values;
?>
LNMP+memcached
1.使用源码安装部署LNMP环境
2.LNMP通过FastCGI支持PHP动态网站
3.为PHP安装memcache扩展
4.通过PHP页面实现对memcached的增、删、改、查等操作
COMMENTS | NOTHING