一、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的组

Memcached缓存服务_第1张图片

 

二、安装和命令行使用

  1.程序安装

   (1)memcached程序安装

          [root@localhost~]#yum install memcached

          [root@localhost~]# systemctl start memcached.service

程序配置:/etc/sysconfig/memcached

               [root@localhost~]# cat /etc/sysconfig/memcached

Memcached缓存服务_第2张图片

   (2)php连接memcached服务器

phpmemcached有两种扩展:php-pecl-memcachephp-pecl-memcached

[root@localhost~]# yum install php-pecl-memcache

Memcached缓存服务_第3张图片

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

用于缓存数据的内存空间大小,单位为MB,默认为64;

-c

最大并发连接数;

-p PORT

tcp端口

-U PORT

UDP端口

-t

用于处理请求的最大线程数;

-M

用于缓存的内存耗尽时,返回错误信息,不是lRU(最近最小使用)算法清理

-f

growth factor, 增长因子;内存划分大小增长,默认1.5

-n

指明最小的slab大小,默认是96;