zoukankan      html  css  js  c++  java
  • php操作Memcache

    一、memcache基本的介绍

    是一个高性能分布式内存对象缓存系统。

    和mysql比较,进行理解memcache

    (1)该软件是一个c/s架构,

    (2)mysql的数据是存储到哪里的?是存储到磁盘里面的。

    memcache的数据是存储到内存里面。

    (3)mysql的数据存储是,由数据库,数据表,数据的记录,存储数据是按照表的结构进行存储的。

    memcache的数据存储格式是:key/value的格式,来存储的,相当于在内存里面有一张两列的哈希表。类似于php的里面的关联数组

    key (键名)      

    二、基本的原理:

     

    比如有一个查询系统,查询某个学生的信息:

     

    三、安装软件

    (1)准备软件,为了方便管理,把该文件拷贝到和apache或mysql或php同一级目录下面。

    (2)开始安装:

    把该软件安装成windows的一个服务,便于管理。

    步骤:

    以管理员的方式,打开cmd(命令提示符),进入到 memcached文件所在的目录。

    可以使用memcahced.exe –h  查看帮助命令。

    memcache –d install  开始安装:

    安装完成后,要完成启动该服务,

    memcached –d start

    查看是否启动成功,可以通过计算机管理里面的服务选项查看。

    memcache的默认端口号是11211,可以通过查看端口,来判断是否开启该服务,

    通过使用netstat –an命令,来查看当前计算机里面监听的服务。

    memcached –d stop停止memcache的服务。

    (3)在安装时,对应的一些参数设置。

    比如设置,缓存的大小。

    -p 监听的端口
    -l
    连接的IP地址, 默认是本机
    -d start 启动memcached服务
    -d restart 重起memcached服务
    -d stop|shutdown 关闭正在运行的memcached服务
    -d install 安装memcached服务
    -d uninstall 卸载memcached服务
    -u 以的身份运行 (仅在以root运行的时候有效)
    -m 最大内存使用,单位MB。默认64MB

    -M 内存耗尽时返回错误,而不是删除项
    -c 最大同时连接数,默认是1024
    -f 块大小增长因子,默认是1.25
    -n 最小分配空间,key+value+flags默认是48
    -h 显示帮助

    -v  输出警告和错误信息。

    -vv 打印客户端的请求和返回信息

    -i 打印memcached和libevent的版权信息

    四、软件操作

    1、直接使用telnet远程协议连接,(类似于mysql客户端的黑窗口)(了解)

    打开cmd进行输入:

    Telnet ip地址(域名)端口号

    (1)设置数据,向memcache里面添加数据

    添加数据:

    语法:

    add   键名 0|1(是否压缩)缓存周期值的长度   [按回车,进行输入要添加的数据]

    0表示不压缩,1表示要压缩

    缓存周期:单位是秒,

    值的长度:长度的单位和客户端有关,此处是字节。

    注意:如果键已经存在,则添加失败。

    修改数据:

    replace

    语法格式和add是一样的。

     

    注意:如果键不存在,则修改失败,只能修改已经存在的键。

    设置数据:

    set命令和add的语法是一样的。

    如果使用set命令,如果键已经存在,则是完成修改,如果键不存在则是添加操作。

    (2)获取数据

    get 键名

    (3)删除数据

    delete 键名

    flush_all  清空所有的数据,

    可以设置某一个有效期,

    flush_all  秒数,在多少秒之后,清空所有的键。

    (4)数据追加

    append 在原有值的后面追加数据

    preappend 在原有值的前面追加数据。

    (5)查看当前状态的一个命令:

    通过该stats 命令能够获取,执行了多少次的get查询,有多少次能够使用get查询到数据,有多少次能够使用get查询失败,计算命中率,

    计算命中率  get成功查询的次数/get的总的查询次数,通过命中率来判断memcache服务性能。

    2、使用php程序当成客户端,连接memcache

    要安装memcache的扩展。

    (1)要准备memcache     php的扩展,在安装扩展时,要和php的版本一致。

    (2)把对应的扩展拷贝到到php安装目录ext目录里面。

    (3)打开php.ini文件,要开启该扩展,完成后,要重启apache,

    (4)测试,是否安装扩展成功,使用phpinfo();函数

    3、php操作memcache.

    (1)实例化一个对象。

    $mem = new Memcache();

    (2)连接memcache,使用connect函数。

      $mem->connect(主机名,端口号)

      $mem->add/set(键名,值,是否压缩,缓存时间)

      $mem->get(键名)

    (3)对存储的数据类型进行讨论。

    php的数据类型:标量数据类型的存储方式。

    php的标量类型在memcac he里面存储都是转换成字符串的形式来存储的。

    php的数据类型:数组的形式。

    在存储数组时,把数组序列化之后,存储到 memcache里面的,在取出数组数据时,自动给我们反序列化。数组的序列化和反序列化,是有add和get函数完成的,无需我们自己干预。

    4、入门案例的使用。

    根据一个sql取出的数据,把sql取出的数据,给缓存到memcache里面,当下次再操作该sql语句的时候,则直接从memcache里面获取。

    5、典型的一个案例应用

    七、memcache细节讨论

    1、缓存周期(有效期)

    缓存周期的设置有两种方式:

    如果缓存周期设置为0表明此数据永不过期

    第一种使用:秒数,最大不能超过30天,即2592000秒,

    第二种使用:使用时间戳,该时间戳是到的哪个时间点。比如我们要把一个数据缓存60天,

    $mem->add($key,$value,0,time()+60*24*3600)

    2、惰性删除,

    就是说,缓存的数据,到期后,不会自动删除,当get数据的时候,查看有没有到期,如果到期了,则再删除该数据。

    memcache不会开启进程来监视键是否过期,省memcache的资源,也省cpu.

    3、Least Recently Used(LRU)

    最近最少使用原则,

    当前存储的数据的在memcache里面空间已经占满后,则memcache会把不活跃(get或set次数比较少的)的数据(不管是否到期)清除,让新的数据给存储进来。

    4、安全性

    memcache定位就是做数据的缓存的,不是数据的持久存储的,因此没有做一些用户的验证,目的提高连接速度,发挥自己的独特功能。

    memcahe该软件本身没有提供一些安全机制,如果要限制使用,则只能在操作系统的层面来解决,比如window系统、安装防火墙的软件,在linux下面使用iptables,seclinux(安全机制)

    5、memcache比较适合于存储哪些数据。

    存储的数据的特点:

    访问比较频繁,

    安全性不高,丢失无所谓,

    修改比较频繁的数据,比如一些用户的在线状态,

  • 相关阅读:
    原子操作--sync/atomic的用法
    基础的排序算法以及查找算法
    (三)MySQL终极篇
    (二)MySQL中级篇
    数据库表添加索引对性能的影响
    事务的四大特性以及事务的隔离级别
    int 和Integer
    数据库三范式
    Java反射
    获取Class实例的三种方式
  • 原文地址:https://www.cnblogs.com/itdi/p/5799576.html
Copyright © 2011-2022 走看看