3-memcache8-Nosql1130_第1页
3-memcache8-Nosql1130_第2页
3-memcache8-Nosql1130_第3页
3-memcache8-Nosql1130_第4页
3-memcache8-Nosql1130_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

为大型网站提速-memcached缓存技术目录一、memcache的介绍11、memcached基本概念12、基本原理13、与mysql比较2二、安装2三、操作memcache软件41、使用客户端连接memcahe,42、设置数据7(1)添加数据7(2)修改数据7(3)设置数据83、获取数据84、删除数据85、其他指令96、状态指令97、失效时间108、key与value的限制11四、使用php来操作memcache111 、安装 memcache的扩展,112、入门测试133、php数据类型探讨存入memcache154、案例1,缓存sql语句的执行结果175、案例2,缓存新闻详情内容,176、memcache在TP5框架中使用18五、分布式配置201、简介说明202、具体搭建步骤使用21六、session 数据入memcache22七、其他问题231、memcache里面适合存储哪些数据。232、惰性删除233、最近最少使用原则244、安全性的问题245、缓存雪崩问题24八、memcache在Linux环境下安装241、安装libevent软件252、安装memcache25一、memcache的介绍1、memcached基本概念(1)Memcached是danga的一个项目,最早是LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。 官方网站: 和 /(2)Memcached是一个高性能的分布式的内存对象缓存系统,用于构建大负载的网站,来分担数据库的压力,简单的说就是将频繁访问的数据存储到内存中,然后从内存中读取,从而大大提高读取速度。学习资源;/memcached/php-connect-memcached.html2、基本原理当前客户端首次访问热点新闻时,从数据库里面取出,并把该热点信息数据给给缓存到服务器的内存里面,后续用户访问时,直接从内存里面获取数据,返回即可。3、与mysql比较(1)与mysql一样,是一个c(client)/s(server)架构的软件。(2)mysql里面的数据,是存储到硬盘里面的,memcache里面的数据是存储到内存里面的,服务器一旦断电后重启,则存储到内存里面的数据就丢失。(3)数据存储到mysql里面,则需要先建立数据库,建立表,设计字段。在memcache里面数据的存储形式是key,value方式,(键值对方式),可以理解成两列的表。比如如下:name 小刚age 12email .二、安装在window进行安装测试,通过memcached -h 查看安装成服务的一些指令先下载软件,拷贝到一个具体位置,一般是和环境软件在一块。(1)以管理员的方式,进入cmd,并进入到memcached软件所在的目录(2)执行memcached d install进行安装。(3)安装完成后,进入启动,windows下dos命令窗口输入netstat -ano即可查看端口使用情况,如果要查看指定端口是否被占用可以使用命令netstat -ano|findstr 端口号。注意:也可以无需安装,直接启动memcache软件注意点;三、操作memcache软件1、使用客户端连接memcahe,语法:telnet ip地址 端口号在cmd窗口里面,输入 telnet ip地址 端口号有的同学电脑会提示“telnet不是内部或外部指令”解决:安装本电脑的telnet客户端服务即可。控制面板-程序和功能-打开或关闭windows服务-Telnet客户端有的系统没有windows服务的具体提示,那就不要使用dos窗口连接转而使用SecureCRT通过telnet协议连接memcache按回车出现如下界面链接成功,2、设置数据(1)添加数据语法:add key 0|1 失效时间 数据长度key :键的名称0|1:是否压缩,0表示不压缩,1表示要压缩,失效时间:缓存周期,单位是秒数据长度:单位是字节,注意:使用add指令,添加数据时,如果键已经存在,则添加失败(2)修改数据语法:replace key 0|1 失效时间 数据长度注意:在修改时,如果键不存在,则修改失败。(3)设置数据语法:set key 0|1 失效时间 数据长度使用set 操作,如果键已经存在,则是修改,如果键没有存在,则是添加。3、获取数据语法:get 键名4、删除数据删除单个数据语法:delete key删除所有数据,(在实际工作中,要慎用)语法:flush_all5、其他指令incr :加法操作,相加指定的值,返回相加后的结果,语法:incr number 100decr :减法操作,减去指定的值,返回相减后的结果,语法:decr number 100可以使用该指令来模拟抢购,比如有1000件商品,在60秒完成抢购,set number 0 60 41000用户抢购一次,数值减一,当减到0时,抢购结束。decr number 16、状态指令语法命令:stats主要通过该命令来计算memcache的效率(命中率)命中率计算:get_hist/cmd_get 如果命中率非常低,则说明memcache低效。需要调整缓存的数据。7、失效时间失效时间,有两种设置方式:(1)时间间隔(秒数)时间间隔 最大不能超过2592000秒(30天)。(2)失效的时间戳,大于当前时间戳才有效。案例1:比如我们要设置一个缓存项,想要缓存20天,应该如何设置此时,就有两种方式,来进行设置第一种方式,使用时间间隔 20*24*3600第二种方式:使用时间戳 time()+20*24*3600案例2:比如我们要设置一个缓存项,想要缓存40天,应该如何设置此时就只有一种方式,使用到期的时间戳。time()+40*24*3600注意:时间间隔与时间戳都是整数,如何来区别呢?如果整数小于2592000,则是时间间隔如果要使用时间戳,则必须大于当前的时间戳。8、key与value的限制设置key的长度不要超过250个字节。value的大小不要超过1MB的数据。select * from news limit 50 = 二维数组 四、使用php来操作memcache1 、安装 memcache的扩展,(1)准备扩展文件,注意: 扩展文件要和php的版本相对应。通过phpinfo()函数查看php的版本。(2)把对应的扩展文件,拷贝到php的安装目录的ext目录里面。(3)打开php.ini配置文件,进行配置加载memcache的扩展。(4)重启apache,通过phpinfo 函数进行测试,如果出现如下提示,则证明已经安装成功。2、入门测试在php的手册里面,给我们提供了一个memcache的类,使用该类的一些方法完成操作。获取数据注意点;在使用memache类操作时,里面的方法有些是和命令是不一样的。比如$res = $mem-getStats(); $rem-increment();3、php数据类型探讨存入memcachephp数据类型有标量和非标量标量:整型 小数型 字符串 布尔非标量:数组 资源 对象 null(1)标量数据,存储到memcache里面,获取值的代码说明:如果是标量数据存储到memcache里面,则取出数据时,保持原样类型。(2)非标量数据,存储到memcache里面,获取数据非标量数据:序列化后再存入到memcached服务器中,得到时反序列化工作。序列化与反序列化过程,是由memcache的扩展完成的,无需我们自己干预。什么是序列化:就是在保存数据时,不但保存数据本身,还保存数据类型。 a.利于在网络间进行数据传输 b.便于重新读取并恢复数据 Memcached本身没有数据类型之分(内部都是以字符串的形式处理的)但是,php是存在数据类型。总结:除了资源类型之外,其他的类型我们都可以存储,当然一般是存储字符串和数组。4、案例1,缓存sql语句的执行结果5、案例2,缓存新闻详情内容,(1)完成新闻列表(2)新闻详情页面,缓存到memcache里面。6、memcache在TP5框架中使用ThinkPHP采用thinkCache类提供缓存功能支持。在config配置文件中,进行如下配置;支持的缓存类型包括file、memcache、wincache、sqlite、redis和xcache。设置缓存;Cache:set(name,$value,3600); 如果设置成功返回true,否则返回false。缓存自增/减针对数值类型的缓存数据,可以使用自增操作,例如:/ name自增(步进值为1)Cache:inc(name)/ Cache:dec(name);/ name自增(步进值为3)Cache:inc(name,3)/ Cache:dec(name,3);获取缓存dump(Cache:get(name);删除缓存Cache:rm(name); 获取并删除缓存Cache:pull(name); 如果name值不存在,则返回null。清空缓存Cache:clear(); 获取的键不存在则把匿名函数的运行结果写入缓存数据并返回缓存的数据。Cache:remember(name,function() return time(););五、分布式配置1、简介说明Memcached是一个高性能的分布式的内存对象缓存系统每台服务器写、读操作都有把对memcache的许多操作平均地给各个分支服务器完成memcache可使用的内存空间是多个服务器空间的“算术和”原理图:php无需关心具体操作是那个memcache服务器,在memcache内部有具体算法,帮助php实现具体分发(操作的memcache)2、具体搭建步骤使用分布式的多个memcache服务搭建: 在一台服务器里边开启多个memcache服务 给多台服务器分别安装memcache服务环境搭建:至少需要两台memcache服务器,第一台:localhost 11211端口的 第二台:localhost 8888;设置数据代码:获取数据需要注意:存储和获取数据时,根据一个算法,来计算存储到哪台服务器,或从哪台服务器取出数据。默认使用取模算法,在存储数据时,根据数据的键,转换成数字和memcache服务器的个数取模,取模的结果,就决定向哪台服务器存储。在取出数据时,也是根据键,转换成数字,和memcache服务器的个数取模,取模的结果,就决定向哪台服务器获取数据。六、session 数据入memcache需要在php.ini文件里面进行配置,session数据入memcache.(1)session.save_handler 配置session的存储方式。(2)session.save_path指定session的存储位置,我们可以使用一个函数ini_set(),完成php.ini里面的一些配置,该配置只能在当前页面有效。ini_set(session.save_handler,memcache); ini_get()ini_set(session.save_path,tcp:/localhost:11210);存储数据的代码:获取数据的代码:注意:把session数据存储到memcache里面,是以session_id为键的。七、其他问题1、memcache里面适合存储哪些数据。(1)访问比较频繁的数据,安全性差的数据,丢失无所谓的数据。(2)数据更新,比较频繁的数据,比如用户的在线状态。(3)数据的单个键值不能太大,不要超过1Mb数据。2、惰性删除Lazy Expiration memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种技术被称为lazy(惰性)expiration。因此,memcached不会在过期监视上耗费CPU时间 3、最近最少使用原则LRU,least Recently Used,最近最少使用原则。memcache在插入新数据时,如果空间不足时,采用删除旧缓存项策略,删除最不活跃的缓存项。4、安全性的问题在memcache里面,没有设置安全认证机制,因为memache就是专做缓存使用,主要突出缓存优势。一般情况下,memcache服务器是在内网中的,不会暴露在公网中,因此一些恶意用户就无法操作memcache服务器。-l 连接的IP地址, 默认是本机 5、缓存雪崩问题如果在设置缓存周期时,设置的缓存周期都一样,当正好赶上高并发时,如果缓存都同时失效,则会把请求涌向mysql服务器,mysql服务器有可能会出现宕机现象,解决方案,设置不同的缓存周期。八、memcache在Linux环境下安装Linux系统安装memcached,首先要先安装libevent库。yum install libevent libevent-devel 注:因为memcached依赖于libevent库,因此,需要先编译libevent编译Memcached时,要指定Libevent1、安装libevent软件(1)下载libevent软件,上传到l

温馨提示

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

评论

0/150

提交评论