dat14-memcached
传统WEB架构问题
许多WEB应用都将数据保存到RDBMS中,应用服务器从读取数据并在浏览器中显示
随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响
数据存储位置对比
性能(从速度来讲)
CPU缓存>内存>磁盘>数据库
价格
CPU缓存>内存>磁盘>数据库
数据分析,处理的能力较强,从性能是最慢的
哪些数据存储在内存里
读写频率高的数据
经常变化的数据
尽快被保存的数据
memcached是高性能的分布式缓存服务器
一般使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态WEB应用的速度
减少数据访问次数,提高动态WEB应用的速度
特征
协议简单
基于libevent的事件处理
内置内存存储方式
memcached不互相通信的分布式
内存管理机制
memcached基于内存,内存管理机制为Slab
传统内存分配机制
使用完通过分配的内存后回收内存。这种方式容易产生内存。这种方式容易产生内存碎片并降低操作系统对内存的管理效率
Slab Allocation机制
它按照预先规定的大小,将分配的内存分割成特定长度的内存块(chunk),再把尺寸相同的内存块分成组(chunk集合),这些内存块不会释放,可以重复利用。
选项
-p 指定memcached监听的端口号,默认为11211
-l memcached服务器的ip地址
-u memcached程序运行时使用的用户身份必须是root用户
-m 指定使用本机的多少物理内存数据,默认为64M
-c memcached服务的最大链接数
-vvv 显示详细信息
-n 间是多少 单位 字节
-f chunk size 大小增长的倍数,默认1.25倍
-d 在后台启动
telnet测试memcached
memcached常用指令
add name 0 180 10 //变量不存在则添加(0是不压缩)(180是秒)(10是10个字节)
set name 0 180 10 //添加或替换变量
replace name 0 180 10 //替换
get name //读取变量
append name 0 180 10 //向变量追加数据
del name //删除变量
stats //查看状态
flush_all //清空所有
memcached缓存刷新
时间过期
服务重启
计算机重启
空间不足
PHP5.3.3 之后支持PHP-FPM
安装LNMP
tar xf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure
make && make install
ln -sv /usr/local/lib/libevent* /usr/lib
tar xf memcached-1.4.31.tar.gz
cd memcached-1.4.31
./configure
./configure --with-php-config=/usr/local/php5/bin/php-config --enable-memcache php支持
make && make install
[root@localhost ~]# memcached -p 11211 -uroot -m 64 -c 200 -vvv -n 4 -f 2 –d
slab class 1: chunk size 56 perslab 18724
slab class 2: chunk size 112 perslab 9362
slab class 3: chunk size 224 perslab 4681
slab class 4: chunk size 448 perslab 2340
slab class 5: chunk size 896 perslab 1170
slab class 6: chunk size 1792 perslab 585
slab class 7: chunk size 3584 perslab 292
slab class 8: chunk size 7168 perslab 146
slab class 9: chunk size 14336 perslab 73
slab class 10: chunk size 28672 perslab 36
slab class 11: chunk size 57344 perslab 18
slab class 12: chunk size 114688 perslab 9
slab class 13: chunk size 229376 perslab 4
slab class 14: chunk size 458752 perslab 2
slab class 15: chunk size 1048576 perslab 1
<26 server listening (auto-negotiate)
<27 server listening (auto-negotiate)
<28 send buffer was 229376, now 268435456
<32 send buffer was 229376, now 268435456
<30 server listening (udp)
<28 server listening (udp)
<34 server listening (udp)
<29 server listening (udp)
<31 server listening (udp)
<32 server listening (udp)
<35 server listening (udp)
<33 server listening (udp)
[root@localhost ~]# netstat -antup |grep memcached
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 130347/memcached
tcp 0 0 :::11211 :::* LISTEN 130347/memcached
udp 0 0 0.0.0.0:11211 0.0.0.0:* 130347/memcached
udp 0 0 :::11211 :::* 130347/memcached
vim /usr/local/php5/etc/php.ini
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226"
extension=modulename.so