1简介:

Memcache(内存缓存) 是一个高性能的分布式的内存对象缓存系统。通过在内存里维护一个巨大的hash表。

其实简单说点就是一个软件,可以用来维护内存,将数据在内存中使用,减少I/O

2工作原理:

memcached是以守护程序方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。

3安装:

分为两个过程:memcache服务器端的安装和memcahe客户端的安装

1)客户端安装:

所谓客户端安装就是php(或其他程序)去使用服务器端的Memcache提供的函数,需要php添加扩展

2)服务器端安装

windows下安装:

Memcahced.exe  -d  install [uninstall]

linux下安装

由于是基于libevent事件,因此需要先安装libevent

安装libevent时

./configure –with-libevent=/usr

Make && make install

安装memcached

./configure –with-libevent=/usr

Make && make install

4使用telnet命令操作memcached

telnet 127.0.0.1 11211

成功连接后,回车两次就可以进行操作了。

5Memcache的安全

Memcache服务器端都是直接通过客户端连接后直接操作,没有任何验证过程,这样如果服务器直接暴露在互联网的话,是比较危险的。为了安全起见,建议两点。

1)最好把两台服务器之间的访问时内网形式的,一般是web服务器跟Memcache服务器之间。普遍的服务器器都是有两块网卡,一块指向互联网,一块指向内网,那么就让web服务器通过内网的网卡来访问Memcache服务器,我们Memcache的服务器上启动时就监听内网的IP地址和端口,内网间的访问能够有效阻止其他非法的访问。

# memcached -d -m  -u root -l 192.168.0.200 -p  -c  -P /tmp/memcached.pid
-d 选项是启动一个守护进程,
-m 是分配给Memcache使用的内存数量,单位是MB,这里是1024MB,默认是64MB
-u 是运行Memcache的用户,这里是root
-l 是监听的服务器IP地址,默认应该是本机
-p 是设置Memcache监听的端口,默认是11211,最好是1024以上的端口
-c 选项是最大运行的并发连接数,默认是1024,这里设置了10240,按照你服务器的负载量来设定
-P 是设置保存Memcache的pid文件位置
 
2)设置防火墙
 
防火墙是简单有效的方式,如果却是两台服务器都是挂在网的,并且需要通过外网IP来访问Memcache的话,那么可以考虑使用防火墙或者代理程序来过滤 非法访问。一般我们在Linux下可以使用iptables或者FreeBSD下的ipfw来指定一些规则防止一些非法的访问,比如我们可以设置只允许我 们的Web服务器来访问我们Memcache服务器,同时阻止其他的访问。
 

下面代码是使用php连接memcache中的小实例

<?php
$mem=new Memcache;
$mem->connect('localhost',11211);
$mem->add('mystr','this is a memcache test!',MEMCACHE_COMPRESSED,3600);//增加一个条目到缓存服务器
$mem->set('mystr','this is another test!',MEMCACHE_COMPRESSED,3600);
$mem->add('myarr',array('aa','bb','cc'));
echo$mem->get('mystr');
//print_r($mem->get('myarr'));
class Person{
public $name='123';
function test(){
echo "this is a test";
}
}
$p=new Person;
$mem->add('myobj',$p);
var_dump($mem->get('myobj'));
echo "<br/>";
echo $mem->getversion();
echo "<br/>";
echo "<pre>";
print_r($mem->getstats()); echo "</pre>";
$mem->close();

ps:$mem->add()第四个参数是指定过期时间,如果此值设置为0表明此数据永不过期。你可以设置一个UNIX时间戳或 以秒为单位的整数(从当前算起的时间差)来说明此数据的过期时间,但是在后一种设置方式中,不能超过 2592000秒(30天)。

在面试题中见到一个是设置31天,这个参数就不能写成$mem->add(,,,31*24*3600),而应写成$mem->add(,,,time()+31*24*3600)

memcache总结的更多相关文章

  1. PHP之Memcache缓存详解

         Mem:memory缩写(内存):内存缓存 1.  断电或者重启服务器内存数据即消失,即临时数据: Memcache默认端口:11211 存入方式:key=>>value    ...

  2. 走进缓存的世界(三) - Memcache

    系列文章 走进缓存的世界(一) - 开篇 走进缓存的世界(二) - 缓存设计 走进缓存的世界(三) - Memcache 简介 Memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用 ...

  3. 网站缓存技术总结( ehcache、memcache、redis对比)

    网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验. 网站缓存按照存放的地点不同,可以分为客户端缓存. ...

  4. MemCache超详细解读

    MemCache是什么 MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高 ...

  5. 如何在腾讯开放平台的云服务器上安装php和memcache 一

    由于被通知腾讯的CEE要关闭了,必须自己切换到服务器,自己装php.烦到一个B. 首先找到官方wiki: http://wiki.qcloud.com/wiki/SUSE%E7%8E%AF%E5%A2 ...

  6. 搭建LNAMP环境(七)- PHP7源码安装Memcached和Memcache拓展

    上一篇:搭建LNAMP环境(六)- PHP7源码安装MongoDB和MongoDB拓展 一.安装Memcached 1.yum安装libevent事件触发管理器 yum -y install libe ...

  7. 前端学PHP之PHP操作memcache

    × 目录 [1]安装 [2]连接 [3]增删改查[4]分布式[5]状态[6]安全[7]应用 前面的话 和访问mysql服务器类似,PHP也是作为客户端API访问memcached服务器的,所以同样需要 ...

  8. 前端学PHP之MemCache

    × 目录 [1]作用 [2]安装 [3]管理[4]命令 前面的话 Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括 ...

  9. Memcache缓存系统构建一

    在如今这个高效率的社会中,怎样将这个高效率应用到自己的程序中,是一个值得追寻和值得探讨的问题.因为这个memcache能够很好的提高检索速度,提升用户体验,而且重要的是减少数据库的访问.这就大大的提高 ...

  10. PHP实现查询Memcache内存中的所有键与值

    使用Memcache时,我们可以用memcache提供的get方法,通过键查询到当前的数据,但是有时候需要查询内存中所有的键和值,这个时候可以使用下面的代码实现: <?php /** * Cre ...

随机推荐

  1. Asp.Net MVC 2.0 Filter基本用法

    在这一节里,大家一同学习下mvc 2.0中的filter,简单的说,filter就是标记在action上的一些属性,来实现对action的控制. mvc2.0中主要包括以下filter 1. Auth ...

  2. 6天通吃树结构—— 第三天 Treap树

    原文:6天通吃树结构-- 第三天 Treap树 我们知道,二叉查找树相对来说比较容易形成最坏的链表情况,所以前辈们想尽了各种优化策略,包括AVL,红黑,以及今天 要讲的Treap树. Treap树算是 ...

  3. 手游开发者大会交流OGEngine新版本发布

    由OGEngine第二个手游开发者交流会举办的圆桌会议在深圳市高新技术园区举行.发布会不仅吸引了手游开发商,供应商也纷纷在国外支付,在国内手游和国外出版商参加. 围绕三个主题会议讨论和交流.每个主题: ...

  4. [ Swift框架 ] # SwiftyJSON

    Swift写的关于转化JSON数据 https://github.com/SwiftyJSON/SwiftyJSON

  5. POJ3342——Party at Hali-Bula

    Party at Hali-Bula Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5418   Accepted: 192 ...

  6. exit() _exit()

    图 C程序的启动与终止 差别: _exit()函数:直接使进程停止执行,清除其使用的内存空间,并销毁其在内核中的各种数据结构; exit()函 数则在这些基础上作了一些包装,在运行退出之前加了若干道工 ...

  7. java设计模式之单例模式(七种方法)

    单例模式:个人认为这个是最简单的一种设计模式,而且也是在我们开发中最常用的一个设计模式. 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个 ...

  8. Linux 下 简单客户端服务器通讯模型(TCP)

    原文:Linux 下 简单客户端服务器通讯模型(TCP) 服务器端:server.c #include<stdio.h> #include<stdlib.h> #include ...

  9. XXX系统发展综述(SSH+Jquery EasyUI)

    一个.该项目总体介绍 前一段时间的工作.我大概花了两三个月开发Web管理信息系统.用于框架集Struts2.3.1+Spring3.0+Hibernate3+Jquery EasyUI1.3.5.业务 ...

  10. Wowza流媒体Live直播和VOD点播配置实战

    Wowza是当今可以说最流行的流媒体服务器之一,近来因为需要搭建相应的服务器,但又不想用camera等作真实的直播,所以想办法用媒体文件转换成直播流再提供给Wowza进行直播.这里把该设置步骤以及设计 ...