设为首页 收藏本站
查看: 859|回复: 5

[经验分享] php学习_第17章_memcache

[复制链接]

尚未签到

发表于 2018-12-22 15:25:16 | 显示全部楼层 |阅读模式
  --什么是memecache
  memcache是一个c/s架构的软件,它通过维护的一张hash表提供内存维护服务,它是一个高性能的分布式的内存对象缓存系统。
  --什么地方使用memcache


  • 数据库(使用select语句)读出来的数据使用memcache处理。
  • 会话控制session中使用memcache(存储用户数据)。
  --工作模式
  memcache的server端以守护进程的方式运行于服务器中。
  client连接server。(client可以用多种语言编写,如php,c,c++,java,perl,python等)
  --工作原理
  memcache在内存中维护了一个hash表(在hash表中通过key来访问value),常被访问的数据保存在此hash表中。
  Memcache和MySQL交互流程图
  如上图,传统的查询方法是直接查询数据库,数据库将结果返回给查询语句,而当有Memcache中间缓存层时,查询的是Memcache缓存数据,下面详细了解Memcache各类数据操作原理:


  • 查询数据(select),首先通过指定的Key查询(get)Memcache中间缓存层数据,如果存在相对应数据,则直接获取出数据结果,查询过程完全不需要查询数据库。  如果不存在,则查询MySQL数据库,并以key对应value的形式将查询结果存储在Memcache缓存数据中,然后将结果返回给查询语句。


  • 更新数据(update),首先更新数据,然后删除相关的memcache数据(delete)。
  • 增加数据(add),首先删除相关缓存数据,然后增加数据。
  • 删除数据(delete),删除数据,并删除Memcache数据。
  --使用方法
  对MySQL的数据操作,主要涉及到的Memcache方法如下:


  • 获取:get(key)  


  • 设置:set(key, value [, expiry])  


  • 删除:delete(key [, time])
  --memcache和静态页面的比较
  php中可以通过生成静态页面减少对数据库的访问,提升效率,但静态页面仍然是以文件的形式存在硬盘中,而memcache是存在内存中的,速度要高很多。
  --windows下memcache服务器端的安装与启动方法


  • 安装
  下载了程序后,在相应目录执行memcached.exe -d install.
  安装后,将会以服务(守护进程)的形式在后台运行。


  • 卸载
  在相应目录执行memcached.exe -d uninstall


  • 启动
  在相应目录执行memcached.exe -d [-m 内存大小,单位m] [-l ip地址] [-p 端口号] [-c 最大连接数] start
  (默认为本机ip,端口11211),启动后在后台将有个memcached的进程运行。
  --memcache的操作(命令行方式)
  


  • telnet ip地址 11211
  

  telnet默认端口是23,但也可以自己指定其他端口,在memcache的telnet服务器端支持的是11211端口。
  --------------php下memcache客户端(是php的扩展包)的安装----------------
  --windows下memcache客户端(是php的扩展包)的安装


  • 下载php_memcache.dll文件,拷贝到php/ext/文件夹下(这个文件夹里面有php的所有扩展文件)
  • php.ini中添加extension=php_memcache.dll
  • 重新启动Apache
  -----------------php下Memcache类的使用-----------------
  --创建Memcache类的实例
  


  • $mem = new Memcache;
  

  Memcache类的构造函数没有参数,所以直接new Memcache。
  --连接到memcache服务器
  客户端(php的扩展模块)使用Memcache的方法connect(string host,[port])连接到memcache服务器。
  


  • bool Memcache::connect ( string host [, int port [, int timeout]] )
  

  host是服务器域名或ip,port一般是11211.
  --连接其他并发服务器
  客户端(php的扩展模块)使用Memcache的方法addServer()连接多个服务器。
  


  • bool Memcache::addServer ( string host [, int port [, bool persistent [, int weight [, int timeout
  • [, int retry_interval [, bool status [, callback failure_callback]]]]]]] )
  

  --往hash表添加数据
  客户端(php的扩展模块)使用Memcache的方法add()往hash里添加数据。
  


  • bool Memcache::add ( string key, mixed var [, int flag [, int expire]] )
  


  • key:键;
  • var:值;
  • flag:通常使用MEMCACHE_COMPRESSED表示按压缩方式存储数据。
  • expire:数据的有效期.
  如果两次添加操作都使用同样的key,系统发现已经有该key,后面的会是无效的。
  --设置hash中的值
  客户端(php的扩展模块)使用Memcache的方法set()设置(或改变)hash中的值(可以是数组类型)。
  


  • bool Memcache::set ( string key, mixed var [, int flag [, int expire]] )
  

  --获取hash中的值
  客户端(php的扩展模块)使用Memcache的方法get()获取hash中的值。
  


  • mixed Memcache::get ( string key )
  

  --删除hash中的值
  客户端(php的扩展模块)使用Memcache的方法delete()删除键为key的项。
  


  • bool Memcache::delete ( string key [, int timeout] )
  

  --注意事项


  • key要有前缀(使用项目名作为前缀标识,防止不同项目间重名)。
  • 一般使用SQL语句作为key后缀,为了区分SQL内容中的大小写,所以通常用md5(SQL)作为key。
  --memcache的安全


  • 使用内网,并指定访问ip。
  • 使用防火墙,在Linux下使用iptables过滤包:
  


  • iptables -a input -p tcp -s 192.168.xxx.xxx -dport 11211 -j accept
  • iptables -a input -p udp -s 192.168.xxx.xxx -dport 11211 -j accept
  




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-654539-1-1.html 上篇帖子: php5与flash的Socket编程 下篇帖子: php 安装过程遇到的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表