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. Floodlight Controller 路线原则

         SDN的出现能够使得各种复杂的路由协议从原本的Device OS中剥离出来,放在SDN Controller中.Controller用一种简单的协议来和全部的Router进行通信.就能够获得 ...

  2. 采用RedisLive监控Redis服务

    1.基础环境安装https://pypi.python.org/packages/source/b/backports.ssl_match_hostname/backports.ssl_match_h ...

  3. linux_coom _ Linux文件比较,文本文件的交集、差集与求差

    交集和差集操作在集合论相关的数学课上经常用到,不过,在Linux下 对文本进行类似的操作在某些情况下也很有用. comm命令 comm命令可以用于两个文件之间的 比较,它有一些选项可以用来调整输出,以 ...

  4. autorun.vbs病毒的清除办法

    症状:计算机里面出现一堆autorun为文件名称的文件,删除后出现找不到autorun.vbs的提示.我就打开当中的一个文件:Autorun.bat,内容例如以下: @echo off  //不显示系 ...

  5. 【SSH三大框架】Hibernate基础第六篇:多对一关联关系的映射、分析及加入、查询

    这里举样例用的是:部门与员工的关系. 一个部门能够相应多个员工,这就是非常明显的多对一关联关系. 我们须要建立两个实体类:员工(Employee).部门(Department) 员工类:Employe ...

  6. Fluent Validation + NInject3 + MVC5

    Fluent Validation + NInject + MVC - Why & How : Part 1 http://fluentvalidation.codeplex.com/ htt ...

  7. C语言 ## __VA_ARGS__ 宏

    在GNU C中,宏可以接受可变数目的参数,就象函数一样 可以把__VA_ARGS__看成是将...赋值给该宏 //注意这里不能在函数中调用abc() #include <stdio.h> ...

  8. 砸金蛋:jQuery+PHP实现的砸金蛋中奖程序

    原文 砸金蛋:jQuery+PHP实现的砸金蛋中奖程序 砸金蛋被广泛应用于庆典活动.商家促销.电视娱乐等场合,它的趣味.悬念能迅速活跃现场气氛.同样,我们也可以将砸金蛋应用到WEB网站上,用于开展线上 ...

  9. log4e插件的安装和使用

    1.首先下载log4e小工具.放入myeclipse10安装文件夹D:\Program Files (x86)\myEclipse10\MyEclipse Blue Edition 10\dropin ...

  10. 通过Web Api 和 Angular.js 构建单页面的web 程序

    通过Web Api 和 Angular.js 构建单页面的web 程序 在传统的web 应用程序中,浏览器端通过向服务器端发送请求,然后服务器端根据这个请求发送HTML到浏览器,这个响应将会影响整个的 ...