一、memcache的简介
memcache是高速,分布式的内存缓存服务器
php的缓存方式一般可以使用memcache技术和redis技术,其中各有优劣,因不同的情况而选择较为适合的缓存技术,其中memcache是缓存系统,而redis是数据库系统,memcache相对于redis的优点是高速,但是速度的差异性很难看出区分。但是memcache的安装,使用等都较为简单,当然redis的逼格当然相对高点
二、memcache的安装
二进制程序,基于命令行的程序
(1)直接双击memcached.exe
(2)cmd执行,将memcache加入服务管理
安装时加上-d 参数即可
使用-h参数可以查看其全部参数含义
其中重要选项
-p 监听端口 默认11211 -l监听的IP -m memcache的最大容量 以M为单位 默认64M
到此安装服务器端完毕
三、memcache的使用
(1)使用SecureCRT作为客户端,对memcache进行操作,发出是以Telnet协议的方式,进行远程连接的
设置:set
规则:set 键名 压缩标志 生命周期 值的长度
值
注释:压缩标志:1表示压缩 0表示不压缩,压缩解缩会消耗时间,但是会节省空间,根据需求而定
生命周期:可以是时间间隔,也可以是时间戳,其是以30*3600*24=2592000(30天的时间)
· 小于等于视为时间间隔,大于为时间戳
值的长度:以字节为单位
获取get
规则 get 键名
其他设置
incr 键名 数值 自增多少
decr 键名 数值 自减多少
add :用法与set相同 如key存在则添加失败
replace:用法与set相同 如key存在则替换失败
delete:删除某个键值
flushall:清空所有
(2)使用php进行操作
配置
1、把相对应的php版本的php_memcache.dll拷贝到php的扩展文件夹
2、配置:在php.ini开启php_memcache.dll的扩展
使用
可以使用OOP语法管理memcached服务器
1、创建memcache实例
$memcache=new Memcache(); $host='localhost'; $port='11211'; $res=$memcache->connect($host,$port); //对memcache的数据进行操作 $memcache->close();
2、数据类型的支持
把标量类型转化成字符串类型进行处理
非标量的数据类型转成json数据进行处理
3、分布式
memcache可以添加对台memcache服务器到集群里,由php_memcache的扩展进行分布式算法处理,选择一台memcache服务器进行存储
$memcache=Memcache(); //添加服务器到集群 $host='192.168.10.110'; $port='11211'; $memcache->addServer($host,$port); $host='127.0.0.1'; $port='11212'; $memcache->addServer($host,$port); //memcache操作 $memcache->close();//关闭memcache
4、缓存失效
缓存过期:memcache在处理过期缓存的时,采用的时懒惰模式的处理方法,即是缓存过期不会立即去处理而是等待服务器去获取的时候,判断是否过期,然后再去删除
缓存空间已满:memcache在插入数据时,若空间不足时,采用删除旧缓存中删除最少用的缓存项的策略,而不是看缓存是否过期,此策略叫RLU策略
5、常用场景
1、session进memcache
首先要先定义memcache,session的处理器
ini_set('session.save_handler', 'memcache'); //定义memcache服务器信息 ini_set('session.save_path', "tcp://127.0.0.1:11211"); session_start(); //session操作