zoukankan      html  css  js  c++  java
  • memcache概述

    一.memcache概述

    1.介绍

    memcache一款高性能的分布式的内存缓存系统,他是将我们的数据以键值对的形式存放在内存,从而可以提高数据的访问速度,从而提高网站的整体的响应速度.

    原理图:

     

    介质访问速度:数据库<文件<内存

     

    memcache的使用场景:

    因为memcache是将数据存放在内存中,不可将数据同步到硬盘中(不可以持久化),电脑一旦关机,内存中的数据就会丢失,所以不要存放重要的数据.

     

    一般数据变化频繁,但是不重要的数据我们可以使用memcache缓存起来

    2.memcache软件

    memcache是一个c/s结构的软件,服务端可以在windowlinux中运行,客户端连接我们可以使用php,putty,secureCRT,telnet工具去操作memcache中的数据

     

    3.memcache和mysql的一个区别

    ①存储数据的介质不同

    mysql:是将数据存放在文件中的,操作它的时候需要磁盘的i/o开销

    memcache:是将数据存放在内存中的,访问速度更加快

    ②存储数据的形式不同

    mysql:是将数据存放在有行有列的二维表中

    memcache:是将数据以键值(k-v)对的形式存储在内存中的

     

     

    RDBMS:关系型数据库.mysql,sqlserver,oracle

    nosql( not only sql):泛指非关系型数据库,产品有memcache,redis,mongdb

     

    二.memcache服务软件的的安装

    1.window中的memcache服务安装

    第一步:把课件中的memcached.exe服务端软件复制到自己的目录中

     

    第二步:memcached.exe的目录去安装启动memcache服务

     

    -p:memcache监听的端口号,默认是11211

    -l:memcache服务器的ip地址

    -u:使用哪个用户启动memcache服务(linux中使用)

    -m:使用的内存大小,默认是64M

    -d install:安装服务

    -d uninstall:卸载服务

    -d start|stop|restart :开启|关闭|重启memcache服务

     

    安装memcache服务(需要以管理员的身份去安装memcache服务):

     

     

    如果安装memcache服务的时候报以下的错:

     

    解决办法:

     

    1-1:连接memcache服务器

    ①使用putty连接:

     

     

    ②使用telnet去连接memcache服务

     

    使用telnet连接memcache服务器:

     

    出现以下界面代表成功:

     

     

     

    ③使用secure-CRT工具连接memcache

     

     

     

     

    2.linux中安装memcache服务

    第一步:memcache所需要的源码包上传到linux中的目录中

     

    第二步:安装memcache所依赖的事件库libevent

     a:解压并进入解压后的目录

     

     b:执行./configure指令,指定安装的路径

     

    c:编译和安装

     

    最后检查有没有所安装指定的目录:

     

    第三步:安装memcache服务端的软件

    a:解压并进入解压后的目录

     

    b:执行./configure指令 ,指定安装路径和libevent的安装路径

     

    c:编译和安装

     

    检查有没有安装成功:

     

     

    第四步:安装好后启动memcache服务

     

     

     

    第五步:连接linuxmemcache服务

     

     

    三.memcache常用的一些操作指令

    1.命令清单

    set name 0  0  3 :增加或者修改一个值

    set:指令

    键名:name

    是否压缩:0-不压缩,1-压缩 (时间换空间还是空间换时间)

    有效期:0代表永不过期,10为有效期为10

    get name:获取一个键名为name的值

    add name 0  0  3 :只能增加一个值

    delete name:删除键名为name的值

    replace name 0  0  3:替换键名为name的值

    flush_all:清空memcache服务器所有的数据(此命令慎用)

    incr age  整数值:自增

    decr age 整数值:递减

    stats:查看memcache服务器的状态

     

     

    2.php操作memcache中的数据

    ①安装windowphp操作memcache的扩展库

     

     

     

    需要重启apache服务器:

     

    建立一php文件,写个phpinfo()函数测试,查看有没有memcache扩展:

     

    2-1:php操作memcache中的数据

    ①使用php提供的内置类库去操作memcache中的数据

     

    ②具体用法

     

     

    打印的结果:

     

    总结:memcache可以存储标量和复合数据类型,还有null类型,只有资源类型的数据不可以存储

     memcache存储数组的时候底层已经把我们序列化存储了,取出来的时候,直接去即可.

     session存储数组也是不需要序列化的.

    但是cookie存储数组是需要序列化的,用的时候需要反序列化

    php序列化函数:serialize(),php反序列化函数:unserialize()

     

    四.lamp环境中安装phpmemcache扩展

    1.lamp中安装php的扩展步骤(面试题)

    ①需要把php对应的源码包拉到linux

    ②解压进入解压后的目录

    ③在解压的目录,执行php的安装目录中的phpize指令加载php的其他扩展程序,执行后会在解压的目录生成一个configure等文件

    ④在解压目录执行configure 并且指定phpphp-config文件路径

    ⑤编译和安装 ,执行完毕后会生成一个***.so的动态库文件

    ⑥在php配置文件php.ini中指定***.so的动态库文件的路径

    ⑦重启apache服务器,写个phpinfo的函数进行测试有没有对应的扩展出现

     

    2.安装步骤

    ①需要把php对应的源码包拉到linux

     

    ②解压进入解压后的目录

     

    ③在解压的目录,执行php的安装目录中的phpize指令加载php的其他扩展程序,执行后会在解压的目录生成一个configure等文件

     

     

    ④在解压目录执行configure 并且指定phpphp-config文件路径

     

    ⑤编译和安装 ,执行完毕后会生成一个***.so的动态库文件

     

    安装后生成一个目录,并且这个目录中有个扩展的memcache动态库:

     

    ⑥在php配置文件php.ini中指定***.so的动态库文件的路径

     

     

    ⑦重启apache服务器,写个phpinfo的函数进行测试有没有对应的扩展出现

     

     

    五.memcache的分布式

    1.介绍

     

     

     

     

    因为单台的memcache服务器能力有限,我们可以设置多个memcache服务器组成一个分布式,这样抗压能力就更大.

    memcache分布式中各台memcache服务器是不可以互相通信,我们可以通过客户端其实现通信,客户端可以使用php一个类库中addServer()函数可以实现分布式存储数据,

     

     

    phpmemcache类库addServer()已经实现了分布式的算法,直接连接多台服务器即可:

    2.php实现memcache分布式

     

     

    3.雪崩现象

    雪崩现象主要是出现在memcache分布式中,就是指当某一台服务器宕机(死机),那么之前请求这台服务器上面的所有的请求瞬间请求mysql数据库,瞬间mysql压力非常大.我们把这种现象称之为雪崩现象

     

    六.memcache的应用场景

     

    1.使用memcache缓存oa系统的公文列表的数据

    第一步:在配置文件中增加memcache的缓存类型,并且指定memcache服务器的ip地址和端口号

     

    第二步:使用TP框架中的S()方法实现数据的缓存

     

     

     

    注意一点:如果用户对数据进行编辑和删除,我们需要对缓存中的数据进行情况,S()清空

    $(‘lists’,null)

    2.session存入nosql中

    2-1.存储session的介质

    session存储文件中(默认模式)

    session入库(存入mysql)

    建议不要入mysql数据库,因为每次操作session信息的时候都需要操作mysql数据库,

    sessionnosql(memcache,redis(存储数据的类型更加丰富))

    存入nosql是最好的方案,也经得住大并发的情况

     

    面试题:session共享的问题

     :sessionnosql,或者入库

    2-2.具体操作

    需要修改session默认的存储机制,因为session信息默认是存放在文件中的,我们需要修改它相关的配置参数:

     

     

    .memcache的一些特性

    1.memcache的惰性失效机制

    memcache中一个值失效了,并不会从memcache中立刻删除,只有发送get执行才会删除,

    我们把这种机制称之为惰性失效机制

    2.LRU删除机制

    LRU:Least ReCent Used(最近最少使用,永久数据也会被剔出)

    问题:如果memcache内存满了,在继续存入一个值,可以存进去吗?

    :可以,只要最近最少使用的就会被踢出去,永久数据也会被剔出.

     

    八.memcache的注意事项

    1.键名不要超过250字节

    2.存储的值不要超过2MB,存储一般的文章内容足够

    3.有效期不可以超过30,超过30天有效期会从1970年开始算起,这时候早就过去了

     解决超过有效期超过30天办法:加时间戳即可 time()+31*3600*24

     

     

     

     

  • 相关阅读:
    SPOJ
    基础计算几何
    数颜色
    Codeforces 986B
    一些有趣的题
    jQuery
    linux命令学习
    javaScript
    css
    html
  • 原文地址:https://www.cnblogs.com/xa4312cs/p/6875544.html
Copyright © 2011-2022 走看看