memcache
内存缓存之memcache
1、memcache介绍
memory cache 内存 缓存
Memcached 是国外 社区 网站 LiveJournal 的开发团队开发的 高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态 Web 应用的速度、提高可扩展性。
2、安装软件
windows下安装
2.1、直接前端运行
①把软件及其依赖文件放置到一个运行目录
这种方式使用,当cmd窗口关闭,就会把软件同时关闭,不方便操作使用
2.2、后台服务运行
通过建立windows服务的方式,解决软件后台运行的操作
服务管理操作属于高级权限,需要使超级管理员cmd进行操作
①打开管理员cmd
②查看相关参数帮助,及其安装服务
-p 监听的端口号
-l 监听的地址 确认哪些ip地址可以连接
-d start 启动memcahed服务
-d install 安装memcached服务
-d uninstall 卸载memcache服务
查看服务并启动memcached
Tip:如果不使用可以选择删除服务
注意服务要是先关闭的
③卸载服务
windows下安装是为了之后能够在windows开发使用
linux下安装
①把软件包上传到linux服务器
通过sftp工具上传即可。
确定软件上传成功
②安装libevent
memcached依赖libevent
先安装libevent
shell > tar zxvf libevent-2.1.8-stable.tar.gz
shell > cd libevent-2.1.8-stable
shell > ./configure --prefix=/usr/local/libevent && make && make install
查看一下libevent是否安装成功
③安装memcached
shell > tar zxvf memcached-1.5.1.tar.gz
shell > cd memcached-1.5.1
shell >./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
shell > make && make install
查看安装目录,是否可以启动
shell > /usr/local/memcached/bin/memcached -u root -d
3、命令行客户端操作
telnet 之前的远程连接协议 memcache可以通过此协议进行连接操作
连接一个服务:ip地址+port端口号
①windows的telnet客户端
cmd > telnet 192.168.127.112 11211
以上问题,可能是防火墙的问题,临时关闭防火墙测试
②简单命令操作使用
set key名称 是否压缩 是否过期 长度
现在一般不进行压缩了,压缩和解压缩需要耗费一定时间
get key名称
delete key 删除key
flush_all 清空所有key
只要是支持telnet协议的工具都可以通过telnet协议连接memcached
三、php操作memcache
1、开启拓展
获取拓展文件,并安装开启拓展,开启拓展之后php就拥有了一个可以操作memcached的类。
之后需要使用拓展文件,都到以下网址找:
memcache的两个php拓展
memcache
memcached
①根据php的实际参数选择拓展
php版本号 软件位数 运行方式(ts nts) 运行平台(vc6 vc9 vc11 vc14 vc15)
②把对应的拓展文件放入php的ext拓展目录
③开启php.ini配置,重启服务,查看phpinfo
可以自行添加一句
使用方式可以参考php手册
注意在使用php操作memcache:
①php的拓展是安装好的
②memcache的服务器端是启动
2、记录格式
key=>value的格式
value的值大小默认1M
key的要求,简洁明了,能够直观描述出value存储的是什么。
3、有效期
memcache有两种设置有效期的方式
①时间差的方式 多少s之后过期 超过30天的时间差将被认为是一个时间戳
$mem->set('classname','ithm5',0,时间差);
②时间戳的方式 在哪个时间戳点过期
设置超过30天的时间点,需要通过时间戳的方式设置
$mem->set('classname','ithm5',0,时间差(time()+时间差));
当key过期之后,返回的值为bool(false)
4、存储各种数据类型
数据保存的最低标准要求,要保持数据的完整性和一致性。
①标量类型 string(字符串) int(整型) float(浮点型) bool(布尔型)
②复合类型 array(数组) object(对象)
序列化操作,是为了方便存储复合型数据
③特殊类型 resoure(资源) NULL(空)
以上所有操作,发现只有资源类型不能够通过memcache操作使用,其他都可以正常使用
5、其他相关操作方法
$mem->delete(键 [, int $timeout ]);
删除指定键的信息,(指定$timeout,则$timeout秒后删除)
$mem->flush();
删除全部键
$mem->add(key, value, 是否压缩, 有效期)
仅添加:Key存在则失败,KEY不存在添加
$mem->replace(Key, Value, 是否压缩, 有效期)
仅替换(修改):Key存在则修改,KEY不存在失败。
以下可以用来做计算器操作
$mem -> decrement(key,num=1)
按照num的幅度,对key的值进行减少操作
$mem -> increment(key,num=1)
按照num的幅度,对key的值进行增加操作
6、php监控操作memcache的客户端
以上两个软件,都需要在安装好php的memcache拓展的前提下才可以使用
1>memcache.php
2>memadmin
四、memcache的应用拓展
1、失效机制(了解)
①懒惰机制 key过期之后不会立即删除,等到获取时(get)再去删除信息
php gc垃圾回收机制 懒惰模式的
②LRU机制 Least Recently USE 最近最少使用 get的使用
默认memcache存储空间为64M 超过此空间,就会删除不太常用key,存储新的key
-M 禁用LRU机制 如果写满就会返回一个错误
2、session入库共享
session 会话技术 用来存储用户的状态信息
默认存储在服务器的目录里的文件中。若果文件夹下的文件多的话,文件读写效率会降低。
①登录标识
②验证码的存储
③短信验证码
问:有做过session入库操作么?session为什么要进行入库?
答:有简单使用过。session入库的好处:
①session文件比较碎小,入库会提高session的读写效率
②为了能够共享session数据 跨站点(单点)登录
一般session共享操作会存储到mysql、memcache、redis