memcache入门
memcache内存缓存技术是实现php语言 对内存 进行操作的中间介质。
memcache与redis的区别:
redis:
支持比较多的数据类型(String/list/set/sortset/hash)
redis支持集合计算的(set类型支持)
每个key最大数据存储量为1G
redis是新兴的内存缓存技术,对各方面支持不完善
支持持久化操作
memcache:
老牌的内存缓存技术,对相关领域支持比较丰富
windows和linux都可以使用
各种框架(tp/yii等等)都支持使用
session的信息可以非常方便的保存到该memcache中
每个key保存的数据量最大为1M
支持的数据类型比较单一,就是String类型
不支持持久化
memcache相关参数设置:
到memcached.exe所在目录执行memcached即可前台启动memcache
设置开机启动项服务:
此时有一个错误提示:failed to install service or service already installed,此时只要右键cmd.exe以管理员方式运行再次设置即可。
在PHP中安装memcache扩展
复制php_memcache.dd到php扩展目录: memcache必须匹配php版本(memcache 5.3 = php 5.3),PHP版本是否线程安全、是VC9还是VC11的版本也得对应上。
下载地址:http://windows.php.net/downloads/pecl/releases/memcache/3.0.8/
修改php.ini,开启memcache扩展:
之后重启Apache
phpinfo查看memcache扩展成功:
php对memcache的使用:
memcache在php中就是一个操作类,具体使用:实例化对象、对象调用成员的过程。php中memcache的使用,其数据模型与redis一致,为 key - value。
memcache中key的名字的组成部分与redis比较相似,基本键盘可以输入的信息都可以作为key的名字部分,key的长度最大是250字节。空格和\n都可以使用,而Redis中不可以使用空格或者\n。
set方法:bool Memcache::set ( string $key
, mixed $var
[, int $flag
[, int $expire
]] )
Memcache::set()向key
存储一个元素值为 var
。参数expire
是以秒为单位的失效时间, 如果设置为0表明该元素永不过期(但是它可能会因为为了给其他项分配空间而被删除)。如果你希望存储的元素 经过压缩(使用zlib),你可以设置flag
的值为MEMCACHE_COMPRESSED
。
是否压缩的特点:压缩:内存空间节省、运行速度稍慢 / 未压缩:内存空间占据多、运行速度快
有效期设置有两种方式:
A. 时间差设置
从当前的时间点向后顺延指定秒的时间就过期
$me -> set(key, value, 是否压缩, 120); //120秒后到期
该方式有限制:最多的时间差就是30天(2592000秒),如果超过了30天的设置,会当做时间戳处理,立马过期。
B. 时间戳设置
从1970-1-1 0:0:0 到现在经过的秒数
$me -> set(key, value, 是否压缩, time()+120); //向后120秒到期