一、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比较适合于存储哪些数据。

存储的数据的特点:

访问比较频繁,

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

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

php操作Memcache的更多相关文章

  1. 在telnet下操作memcache详解(操作命令详解)

    这篇文章主要介绍了在telnet下操作memcache详解,telnet下的memcache操作命令详解,需要的朋友可以参考下 在定位问题.测试等时候经常需要对memcache的数据进行一些操作,但是 ...

  2. 使用telnet操作memcache,一般不常用

    使用telnet操作memcache,一般不常用   1.使用方法 1. 连接到memcached telnet 192.168.1.100 11211 add name 0 60 5     [说明 ...

  3. 文成小盆友python-num11-(2) python操作Memcache Redis

    本部分主要内容: python操作memcache python操作redis 一.python 操作 memcache memcache是一套分布式的高速缓存系统,由LiveJournal的Brad ...

  4. 整理php操作memcache缓存为基础的方法

    php操作memcache共享缓存方法 采用memcache的前提下,是需要在服务器端被配置memcahche环境! 证实memcahce经过正常的连接可以在程序中使用! <?php /** * ...

  5. PHP操作Memcache基本函数

    Memcache模块提供了于Memcached方便的面向过程及面向对象的接口,Memcached是为了降低动态web应用从数据库加载数据而产生的一种常驻进程缓存产品.Memcache模块同时提供了一个 ...

  6. php操作memcache缓存基本方法

    memcache 是一个高效的分布式的内存对象缓存系统,他可以支持把php的各种数据(数组,对象,基本数据类型)放在它管理的内存中 1.代码使用 <?php //连接 $mem = new Me ...

  7. php操作Memcache的一个类库

    ###php操作Memcache的一个类库 代码如下: <?php /** * Created by PhpStorm. * User: alisleepy * Date: 2019-03-14 ...

  8. day35-python 操作memcache一

    memcache简介 Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. ...

  9. 详解PHP操作Memcache缓存技术提高响应速度的方法

    本文转载http://blog.csdn.net/zhihua_w  不错的博客,仅供本人学习之用 一般来说,如果并发量不大的情况,使不使用缓存技术并没有什么影响,但如果高并发的情况,使用缓存技术就显 ...

随机推荐

  1. C语言中内存对齐

    今天一考研同学问我一个问题,一个结构体有一个int类型成员和一个char类型成员,问我这个结构体类型占多少个字节,我直接编个程序给他看结果.这个结构体占八个字节,咦,当时我蛮纳闷的,一个int类型四个 ...

  2. php文件上传参考配置与大文件上传

      PHP用超级全局变量数组$_FILES来记录文件上传相关信息的,在php文件上传之前,可通过调节php.ini中相关配置指令,来控制上传相关细节. 1.file_uploads=on/off   ...

  3. 读IT小小鸟有感

           第一次阅读<我是一只IT小小鸟>是在老师的推荐下的,我是一名软工大一新生,那天在课堂上听到了这本书,由于是10年前的老书,要找到它非常不易,终于在网上看到一些部分电子档.   ...

  4. 【python】属性

    在python中,一切皆是对象(object),对象拥有很多属性(arrtribute) 属性分2种 类属性(class attribute):类自身定义or继承 对象属性(object attrib ...

  5. 北大poj- 1067

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 40058   Accepted: 13520 Descripti ...

  6. 兼容各版本浏览器,封装原生Js获取ClassName

    web前端开发工作中常常会用到获取元素的className,用jQuery的$(".class")方法也可以获取className,但是有时候牵扯到数据而影响的加载顺序的原因会获取 ...

  7. GFW-新闭关锁国政策

    当八国联军的炮火轰开古老的北京城门,不知道腐朽的清政府是否依旧认为闭关锁国政策是一项正确的国策?清政府实施闭关锁国政策基于2点考虑:1.安全,国家安全,不想让这些洋鬼子来捣乱.2.我天朝大国,根本无需 ...

  8. 路线更改事件 $routeChangeStart 与 $locationChangeStart

    $routeChangeStart属于$route模块,使用将要改变的路由和当前路由对比,在没有跳转之前 参数包括 function(event, next, current)  next $loca ...

  9. H3C汇聚层交换机认证在线人数展示系统之需求说明和功能点说明

    一.需求 (一)每五分钟查询一次交换机的连接情况: (二)每2.5分钟更新每栋楼的连接情况. 二.功能点 序号 功能点说明 待定 完成 未完成 完成时间 预计用时(min) 实际用时(min) 备注 ...

  10. C++/java之间的Socket通信大小端注意事项

    在一个物联往项目中,需要java云平台与一个客户端做socket定制协议的通信:然而在第一次测试时,并没有按照预想的那样完成解析.查找资料以后是因为客户端的数据读取方式为小端模式,而java默认采用大 ...