一、Memcahced简介
1.mamcached:缓存服务 开源高性能,支持分布式的内存缓存系统。应用于用到公共缓存的系统中,它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。 在Linux上安装程序为memcached程序包,监听端口11211/tcp,11211/udp 2.memcached特性 (1)K/V缓存:键值数据(可序列化数据)模型缓存,key引用,value数据内容。键不能相同,有过期时间 (2)存数在内存中hash表中,断电不复存在。是硬件存储的补充 (3)仅仅是一个缓存,非代理,需要用户自己去发起读取数据请求;功能的实现一半以来于服务端,一半以来于客户端 (4) 支持分布式缓存,各服务器之间互不通信,当一台主机出现不问仅影响本机存储缓存; (5)O(1)的执行效率,每秒百万次读写请求 (6)清理过期数据:LRU(最近最少使用算法)。清理分割惰性缓存管理机制,数据过期且内存够用不会主动删除,但时查询不到。使用到该空间时候会直接覆盖
3.memcached内存空间分配 memcached仅是一个内存存储最终数据还是要存储在strore中,限制其发展;基于内存的存储缓存使用过期时长不同而导致内存回收后的内存碎片问题,使得使用率不高,所以memcahced预划分好内存空间片段,切割多类别的缓存空间块(Chunk),并把尺寸相同的块分成组,缓存数据时候会找一个最小能容纳的空间,若放入的类别中仍有空闲,会放弃使用空间。 Slab Allocation术语: Page:分配给Slab的内存空间,默认是1MB。分配给Slab之后根据slab的大小切割成Chunk Chunk:用于缓存记录的内存空间 Slab Class:特定大小的chunk的组
二、安装和命令行使用 1.程序安装 (1)memcached程序安装 [iyunv@localhost~]#yum install memcached [iyunv@localhost~]# systemctl start memcached.service 程序配置:/etc/sysconfig/memcached [iyunv@localhost~]# cat /etc/sysconfig/memcached (2)php连接memcached服务器 php和memcached有两种扩展:php-pecl-memcache、php-pecl-memcached [iyunv@localhost~]# yum install php-pecl-memcache 2.基于命令行用法 memcahced程序键值的设定和调用一般只能基于命令行模式或者程序调用 存储类命令 | set, add, replace, append, prepend | 获取数据类命令 | get, delete, incr/decr | 统计类命令 | stats, stats items, stats slabs, stats sizes | 清理 | flush_all |
3.memchached常用选项 memcached [OPTIONS] -l IP | 监听的IP地址;默认为 | -d | 运行为守护进程 | -u USERNAME | 以USERNAME用户身份运行程序 | -m <num> | 用于缓存数据的内存空间大小,单位为MB,默认为64; | -c <num> | 最大并发连接数; | -p PORT | tcp端口 | -U PORT | UDP端口 | -t <num> | 用于处理请求的最大线程数; | -M | 用于缓存的内存耗尽时,返回错误信息,不是lRU(最近最小使用)算法清理 | -f <num | growth factor, 增长因子;内存划分大小增长,默认1.5倍 | -n <num>: | 指明最小的slab大小,默认是96; |
|