基本概念
1. 缘起:
在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。但是Web中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活。此时Memcached或许是你想要的。
2. Memcached是什么?
Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
3. Memcached能缓存什么?
通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
4. Memcached快么?
非常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态),使用自己的页块分配器和哈希表,因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1)。
Danga Interactive为提升Danga Interactive的速度研发了Memcached。
5. Memcached的特点
Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问,因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。
缓存数据:
1.在内存中缓存数据 2.数据形态以key->value结构 3.安全度非常差的
软件:
1.memcache模块
让php支持memcache的函数,可以去连接memcache服务,进行增、删、改、查
2.memcached 提供memcache服务,11211
学习memcache:
1.memcache服务器操作
2.用php去操作memcache
1.4.5 版本之前用作为一个服务安装,1.4.5 版本之后用任务计划中启用一个普通进程来使用
具体内容如以下链接:http://www.runoob.com/memcached/window-install-memcached.html
这里已将上面的链接中的安装包下载好,可以直接下载使用
memcached安装包
这里使用1.4.5之前的版本安装
2.1 在网上下载memcached1.4.5之前的任意版本。解压放某个盘下面,
比如在c:\memcached(添加环境变量:c:\memcached)
在终端(cmd)下:
C:\memcached>memcached.exe -d install 安装
memcached.exe -h 获取所有帮助
注意:
1. 路径根据自己的实际情况修改
2. 执行安装命令如果出现不是"某某指令不是内部或者外部指令,也不是可运行的程序"时,请查看环境变量是否设置正确。
3. 执行安装命令如果出现"failed to install service or service already installed"的错误,找到cmd.exe程序点击右键使用管理员身份运行。
4. 执行之后可以在任务管理器中服务选项中看到是否安装成功
2.2 安装成功之后使用以下两条指令进行开启跟关闭
D:\AppServ>memcached.exe -d start 启动
D:\AppServ>memcached.exe -d stop 停止
如果查看memcache已经启动:
1.服务列表 services.msc
2.查看进程 tasklist|find "11211"
3.查看端口 netstat –an|find "11211"
4.查看端口 netstat -an |find "11211"
5.进程树 tasklist
2.3 然后再设置启动参数(离线状态下进行设置)
memcached.exe -d -m 150 -u root -l 127.0.0.1 -p 11211 -c 1024
-m 设置内存
-u 登录用户
-l 监听网卡
-p 监听端口
-c 并发用户
3.1 如何选择版本memcache版本
从phpinfo()中查看php的版本号,Zend Extension Build参数里TS还是NTS(线程安全or不安全)
compile是vc6还是vc9还是vc11和Architecture是x64还是x86
按照这个要求,前往https://windows.php.net/downloads/pecl/releases/memcache/3.0.8/下载对应的memcache扩展
3.2 将下载下来的php_memcach.dll放到php/ext下面,然后修改php.ini文件,添加extension=php_memcach.dll,重启apache即可,在phpinfo中出现memcache扩展就表示添加成功
php扩展之memcache扩展
注意事项:
如果没有在phpinfo中看到memcache扩展
1. 看memcache版本有没有对应
2. 查看phpinfo中的Configuration File (php.ini) Path 的参数,这个才是你php环境中php.ini配置文件的位置,修改此文件才有效
以wamp集成环境为例,左边是C盘php.ini,右边是D盘php.ini,因为我php.ini是在C盘
3. windows系统不支持memcached扩展,仅支持memcache扩展,两者名字相差个d
END