2022年php缓存技术学习笔记_第1页
2022年php缓存技术学习笔记_第2页
2022年php缓存技术学习笔记_第3页
2022年php缓存技术学习笔记_第4页
2022年php缓存技术学习笔记_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学习必备欢迎下载memcached缓存技术简单介绍: memcached是可以把你的数据放入内存,从而通过内存访问提速。主要的目的是提速。memchched 服务维护了一张内存表(hashtable) key 一般是字串,不能重复value 可以放入 (字符串,数值,对象,布尔,二进制数据图片/视频 ) 特别说明:就是不能方php 里面的资源类型 ; 原理图 : key value 。 。 。 。 。 。 。 。 。安装并使用memcached:memcached.exe下载 memcache软件 ,解压安装指令 :memcached.exe d install,此处一定要以管理员的身份安装,

2、也就是要以管理员的身份启动cmd 精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 1 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 1 页,共 18 页 - - - - - - - - -学习必备欢迎下载然后在服务里面我们会看到:然后启动:两种方式:1.到服务点击启动。2.memcached d start 如何验证启动是否成功:netstat an 如果能看到11211 netstat anb 检索那个程序在监听更具 ip 取得主机的名字:apache

3、80,mysql3306,ftp21,ssh22,oracle1521,stmp25,memcached11211. 对 memcached操作有 2 种方式:1.php程序 2.telnet工具精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 2 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 2 页,共 18 页 - - - - - - - - -学习必备欢迎下载telnet 工具:操作:xp 系统本来就代开着, 而 win7 为了安全性,关闭着这个东西

4、,毕竟也是明文传输,不安全。我们要用,win7 下首先要启动 telnet 工具:精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 3 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 3 页,共 18 页 - - - - - - - - -学习必备欢迎下载等一会就 ok 了然后按照一下步骤即可登陆 telnet 连接到 memcached服务,telnet 11211 即可。增加add key 名 0 存放时间 (秒) 数据大小 (字符)

5、 例子: add key1 0 30 5 获取get key值例子: get key1 截图:修改:1. set key 名 0 存放时间数据大小,精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 4 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 4 页,共 18 页 - - - - - - - - -学习必备欢迎下载举例: set key1 0 40 5 如果 key1 不存在,则相当于增加,如果存在,则替换2. replace key 名 0 存放时间

6、数据大小举例: replace key1 0 40 5 如果 key1 不存在,则提示not_store 删除delete key 名举例: delete key1 flush_all 可以一次性把数据清空stats:查看状态清单,只要是查看命中率,cmd_hits/cmd_get. 现在我们来用php 程序来操作memcached 简单的说,操作就是调用函数。精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 5 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - -

7、第 5 页,共 18 页 - - - - - - - - -学习必备欢迎下载程序:php_memcache.dllv5.3.5 1,拷贝到 php 的 ext 下:不同版本的php 所使用的 php_memcache.dll 版本。 版本要对应。2 ,修改 php.ini 3,重启 apache,如果启动报错, 那么说明 dll 文件的版本和php的版本不一致。如图:一个案例:其他类型都ok ,对于对象类型,不叫特别一点:dom1.php 精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 6 页,共 18 页 - - - - - - - - -精品学习

8、资料 可选择p d f - - - - - - - - - - - - - - 第 6 页,共 18 页 - - - - - - - - -学习必备欢迎下载dom2.php: 运行 dom1.php 后,将数据存入,也顺便去处,发现结果正确,如下图:精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 7 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 7 页,共 18 页 - - - - - - - - -学习必备欢迎下载但是运行 dom2.php 去取的东西

9、,发现:有提示主要原因是模糊:解决方案:在 dom2.php 重新声明一下dog 类得定义:然后运行:问题 ok 说明:资源类型不能放入到memcached中。说明:serialize:把数据及其类型转化成一个字符串,数据传输json_decode:键值对的性质保存,数据使用。精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 8 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 8 页,共 18 页 - - - - - - - - -学习必备欢迎下载在我们增加

10、数据的时候,如果把超时expire 设置为 0,表示数据永远在,如果是直接给的秒数,最多保存30*3600*24 。如果想保存时间超过30 天,time()+ 天数 *3600*24 即可。dom1.php: connect(,11211); if(!$mem) die(连接失败 ); /增加/字符串/*if($mem-add(key1, 西安 ,false,60) echo 添加 ok; */ /添加数字/* if($mem-add(key1,100,false,60) echo 添加 ok; */ /添加数组/在添加数组时候,更具需要,希望序列化再放入,/serializ

11、e()函数,序列化,不但保存数据本身,/而且保存类型,所以可以反序列化/1.保存磁盘/2.网络传输/* $arr=array(北京 ,西安 ); if($mem-add(key1,$arr,false,60) echo 添加 ok; */ /serialize($arr) /* 精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 9 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 9 页,共 18 页 - - - - - - - - -学习必备欢迎下载/添加对

12、象:class dog public $name; public $age; public function _construct($name,$age) $this-name=$name; $this-age=$age; $dog1=new dog(小狗 ,50); if($mem-add(key1,$dog1,false,60) echo 添加 ok; */ /添加 null 和 bool /* if($mem-add(key1,null,false,60) echo 添加 ok; */ /* if($mem-add(key1,false,false,30) echo 添加 ok; */

13、/关于资源的问题/* $conn=mysql_connect(localhost,root,root); if(!$conn) die(连接失败 ); if($mem-add(key1,$conn,false,30) echo 添加 ok; */ /查询$val=$mem-get(key1); /echo val=.$val; echo ; var_dump($val); var_dump($conn); /修改if($mem-raplace(key1,hello,false,30) echo replace ok; /删除if($mem-delete(key1) echo delete ok

14、; dom2.php 精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 10 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 10 页,共 18 页 - - - - - - - - -学习必备欢迎下载connect(,11211); if(!$mem) die(连接失败 ); class dog public $name; public $age; public function _construct($name,$age) $this-n

15、ame=$name; $this-age=$age; $dog=$mem-get(key1); var_dump($dog); test.php name=$name; $this-age=$age; $dog2=new dog(小黄 ,40); /保存到文件中/file_put_contents(d:/my.log,serialize($dog2); file_put_contents(d:/my2.log,json_encode($dog2); echo 保存 ok; /取回来,在网络创书中很有意思/$dog=unserialize(file_get_contents(d:/my.log)

16、; $dog=json_decode(file_get_contents(d:/my2.log); var_dump($dog); 实际开发中,如果管理员不让我们加载memcache.dll 文件,我们可以自己用源码,去解决,就是把需要加载的dll 变成php 的,在我们的程序中当做一个类来使用:精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 11 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 11 页,共 18 页 - - - - - - - - -学

17、习必备欢迎下载memcached-client.php我们现在关闭, dll 文件。php 调整提示信息的位置: array(:11211),/主机和端口debug = false,/是否调试compress_threshold = 10240,/最大压缩数persistant = true);/ 是否持久连接$mc-add(key, array(some, array); $mc-replace(key, some random string); $val = $mc-get(key); echo $val; /使用的方法和dll 的使用一模一样php memcached深

18、入探讨:1.更多的应用在c/s 结构中2mem:libevent apache:mpm mysql:多线程这些都是处理并发的关键技术3. 精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 12 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 12 页,共 18 页 - - - - - - - - -学习必备欢迎下载4. 一台机器可以启动多个memcached 再启动一个,即可。分布式使用:精品学习资料 可选择p d f - - - - - - - - - -

19、 - - - - 第 13 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 13 页,共 18 页 - - - - - - - - -学习必备欢迎下载代码:addserver(,11211); $mem-addserver(,9999); /加载到那个缓存中,不是由我们程序决定的。而是自身根据一定的算法决定的,是由对象本身维护的。hash算法$mem-add(key1,hello,false,400); $val=$mem-get(key1); echo $val

20、; 在其他文件里面取得数据的时候,要把放入的时候所有的mem连接都加进去。如下:精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 14 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 14 页,共 18 页 - - - - - - - - -学习必备欢迎下载memcache 生命周期:从数据放入memcache 开始计时,知道时间到就销毁,如果时间设为0,则表示永不过期。1.时间到。 2.重启 memcached服务。 3.重启 memcached服务所在的

21、机器4. 将 session数据放入到 memcached中:传统方法是保存在文件中。我们现在保存到memcached中:首先在 php.ini 文件中:指定 memcache :指定路径:session_start(); $_sessionname=中国人 ; class dog public $name; $dog1=new dog; $dog1-name=abcde; $_sessiondog=$dog1; $name=$_sessionname; /如果 session的数据放入到mem 中,那么它是以、 、/sessionid 为 key 值进行添加的echo name=.$name

22、; var_dump($_sessiondog); echo sessionid=.session_id(); 刚才的是修改了php.ini 文件,如果不让你去修改。该怎么办呢精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 15 页,共 18 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 15 页,共 18 页 - - - - - - - - -学习必备欢迎下载可以用 ini_set()函数,这个可以修改php.ini 的任何配置我们现在复原刚才的改动. 然后 ; ini_set(session.save_handler,memcache); ini_set(session.save_path,tcp:/:11211); php 的安全模式与非安全模式:linux 安全模式下,对文件的操作几乎失效。提示:你可以通过ini_set()动态修改 php.ini 的很多设计,但是修改只作用于本文件。memcached和 s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论