1. Memcache介绍
Memcached 是国外社区 网站 LiveJournal 的开发团队开发的 高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态 Web应用的速度、提高可扩展性。
2. 安装
使用 -d install参数来进行安装
注意:最好关闭360卫士、金山卫士等软件。
在“运行” --> services.msc 来查看服务
2.1安装过程中可能发生的错误
① 无法安装为系统服务
原因:没有使用管理员权限运行cmd
② 缺少系统文件
3. 命令行操作memcache
3.1 memcache帮助命令
-p(端口): memcache默认端口号 11211,可以使用该参数来指定端口。
-d:
Install : 安装memcache程序为系统服务
Uninstall: 卸载memcache服务
Start: 开启服务
Restart: 重启服务
Stop|shutdown: 关闭服务
-m: 设置多大的内存用来保存缓存数据,默认是64m大小。
4. Memcache存储数据方式
使用“键-值对”方式,哈希表
Key(键) | Value(值) |
id | 10001 |
name | 张三丰 |
age | 108 |
和关联数组很像。
5. Memcache常用命令
5.1 set 设置命令(存)
Set在没有数据条目的时候,是新增;如果有了该条目之后,就是修改。
格式: set-----键名----- 是否压缩(0/1)----有效期(s)--- 数据长度回车
--------------值
5.2 get读取命令(取)
格式: get 键名
如果超过有效期后,无法读取该数据
5.3 delete删除命令
格式: delete 键名
5.4 flush_all 清除所有数据命令
格式: flush_all
6. PHP操作memcache
6.1 安装memcache扩展
memcache并不是php内置的功能,需要进行扩展(和GD扩展一样)
1) 下载memcache.dll文件(php_memcache.dll)
2)将php_memcache.dll文件复制到 php/ext目录下
3)修改php.ini的配置文件增加extension=memcache.dll
最后重启apache服务器,配置成功6.1 php操作memcache
基本使用方式:
7.memcache存储基本类型
整型、浮点型、字符串、布尔型
php的基本类型可以原型存储,而复杂类型如数组,对象,memcache会先进行序列化,变成类json字符串的形式存入memcache。
8. 实际程序中使用memcache
9. Session共享存储(session存入memcache)
9.1 为什么session需要存入memcache
$_SESSION[‘uid’]= 1001;
$_SESSION[‘uname’]= ‘zs’;
Session入memcache的原因是能够让session共享到其他系统当中
9.2 程序实现
① 修改php的配置文件:
指定session保存类型为memcache
修改session.save_handler=memcache
指定memcache服务器的地址和端口号
修改session.save_path=tcp://localhost:11211
②代码示例: session入memcache
临时修改php配置文件:ini_set();
Session保存到memcache中时,使用sessionid作为键名
key | value |
nr5mote3v39hvhd0mf57ol61m6 | Deptid=101 Deptname=开发部 |
④ 从memcache中获取session
一般使用的方式
向memcache中存 set() 取get()
Session方式:直接使用$_SESSION预定义数据即可
10.分布式memcache服务器
10.1 什么是分布式memcache
就是使用多台memcache服务器,来组成一个memcache服务器阵列。
目标是提升memcache的执行效率
10.2 如何使用分布式
1)使用多台服务器,每台都开一个memcache服务。 性能极高,价格昂贵。
2)使用一台服务器,开启不同的端口。(相当于开启了多个memcache服务)。性能较高,价格便宜。
使用第二种方式:
在分布式中存取数据: 我们在使用set()方法向分布式memcache中添加数据时,不需要考虑到底是向哪个memcache中增加数据,系统已经内置好了算法。数据会“平均”的分布到这三台服务器当中。
11.TP中使用Memcache
11.1 session入memcache
Session操作memcache的类文件:
路径: ThinkPHP/Library/Think/Session/Driver/memcache.class.php
修改配置文件
11.2 般使用方式
将MySQL中取出的数据,保存到memcache中
TP提供了S()方法来进行数据缓存的操作。
S()使用方法:
存: S(键名,值,过期时间);
取: S(键名);
修改配置文件:
使用的缓存类型: