1、 简单讲Memcache和Memcached都讲的是同一个开源项目http://memcached.org/,只不过Memcached一般指的是后台的cache server(其实也是一个客户端的,参考php手册).而Memcache指的访问cache server的客户端。Memcached提供了两种访问协议,ASCII和Binary。 2、 MemcacheDB=Memcached+BerkeleyDB组成的轻量的持久数据库,与前两者是不同的两个东西。 3、作为数据库就要讲究consistency,但是Memcached是一种分布式的缓存机制,因此并不严格要求consistency,而且实际上每个memcached server之间本身不通讯也不共享,所谓的分布式是由memcached的客户端程序来决定的。一般分布式算法采用基于server节点数的取余法,这种方法以node数为基础,因此增减服务器就会造成很大hash失效问题。所以改进的算法一般采用consistent hash算法,这种算法取消了以服务器节点数作为基数的理念,而是直接对服务器的节点进行hash,然后散布在0~2^32的圆周上,同样对于数据的key也采用同样的hash进行散布,对于key hash的结果取其所在圆周顺时针方向最近的一个服务器节点进行set,这样当增减服务器时,只会影响散布在该增减的服务器到逆时针方向的上一个服务器节点之间的数据。一下子减少了损失。
Browsing the archives for the memcache tag
Memcache服务器端都是直接通过客户端连接后直接操作,没有任何的验证过程,这样如果服务器是直接暴露在互联网上的话是比较危险,轻则数据泄 露被其他无关人员查看,重则服务器被入侵,因为Mecache是以root权限运行的,况且里面可能存在一些我们未知的bug或者是缓冲区溢出的情况,这 些都是我们未知的,所以危险性是可以预见的。为了安全起见,我做两点建议,能够稍微的防止黑客的入侵或者数据的泄露。 内网访问 最好把两台服务器之间的访问是内网形态的,一般是Web服务器跟Memcache服务器之间。普遍的服务器都是有两块网卡,一块指向互联网,一块指向内 网,那么就让Web服务器通过内网的网卡来访问Memcache服务器,我们Memcache的服务器上启动的时候就监听内网的IP地址和端口,内网间的 访问能够有效阻止其他非法的访问。 # memcached -d -m 1024 -u root -l 192.168.0.200 -p 11211 -c 1024 -P /tmp/memcached.pid Memcache服务器端设置监听通过内网的192.168.0.200的ip的11211端口,占用1024MB内存,并且允许最大1024个并发连接
周六的S2 Web 2.0技术沙龙上介绍了memcache中使用mutex场景(文后要演讲稿),有网友对详情感兴趣,简单介绍如下。 场景 Mutex主要用于有大量并发访问并存在cache过期的场合,如 首页top 10, 由数据库加载到memcache缓存n分钟 微博中名人的content cache, 一旦不存在会大量请求不能命中并加载数据库 需要执行多个IO操作生成的数据存在cache中, 比如查询db多次 问题 在大并发的场合,当cache失效时,大量并发同时取不到cache,会同一瞬间去访问db并回设cache,可能会给系统带来潜在的超负荷风险。我们曾经在线上系统出现过类似故障。
[文章作者:张宴 本文版本:v1.1 最后修改:2008.09.09 转载请注明原文链接:http://blog.s135.com/post/357/] 鉴于国内外还没有人撰写如何安装Memcache_engine的文章,于是,我根据自己的编译安装步骤,写下此文。 Memcache_engine是一个MySQL 5.1数据库的存储引擎,它能够让用户通过标准的SQL语句(SELECT/UPDATE/INSERTE/DELETE)访问Memcached(还支 持新浪的Memcachedb、dbcached)中 存放的数据。
第一次在FREEBSD下配置环境,感觉好爽,安装的时候也参考了别人的介绍,在此表示感谢。
为了方便以后的操作,现在记录写下来。
安装MYSQL时要注意:
mysql默认数据库放在/var分区里,如果你的数据库很大,那么你需要在前面分区的时候把/var分区分到足够大,
如果你想改变它的安装目录,例如安装到:/usr/db,那么可以按如下方法:
#mkdir /usr/db
先在/usr建立一个数据库目录,然后
#cd /usr/ports/databases/mysql50-server
#make install clean
开始下载并开始安装数据库。编译安装完之后,重启机器可以启动mysqld守护进程,可以
#mysql
如果能够见到
mysql>
提示符,说明安装好了。不过,刚装完的mysql默认的数据库连接是100个,远远不能应付大网站的要求。按照这个办法加大吧...
最近做的一个项目中有一个分类树的页面.因为运用了Ajax异步读取数据(每onclick一下就会请求一下数据库进行查询-_-!!).数据库服务器负载明显的加大. 运维部的同事建议我使用Memcache对数据进行布式内存缓存. 安装部分 1.下载Memcache for win32 下载地址: http://jehiah.cz/projects/memcached-win32/ 2.下载php_memcache.dll 下载地址: http://pecl4win.php.net/ext.php/php_memcache.dll Note:注意你安装的PHP版本来下载相应的dll文件.(我装的是5.2X版本). 3.修改php.ini文件 在 ;Windows Extensions 处加一句 复制内容到剪贴板代码: ; Memcache extension extension=php_memcache.dll 4.装php_memcache.dll放入到你的扩展文件目录中.一般是php安装目录的ext目录下. 5.重启Apache.打开phpinfo(); 如果能找到如上信息.表示安装成功. -------------------------------------------------------------------------------------------------------------------------- 应用部分 1.主要方法 (1) Memcache::getVersion 返回memcache的版本信息. (2) Memcache::connect 创建一个memcache连接对象. (3) Memcache::pconnect 创建一个memcacher持久连接对象. (4) Memcache::close 关闭一个Memcache对象. (5) Memcache::set 用来添加一个值. 有四个参数,第一个参数是key,第二个参数是value,第三个参数可选,表示是否压缩保存,第四个参数可选,用来设置一个过期自动销毁的时间. (6) Memcache::add 作用和Memcache::set方法类似. 两个方法的区别是如果Memcache::add方法的返回值为false,表示这个key已经存在,而Memcache::set方法则会直接覆写. (7) Memcache::get 用来获取一个值. 只有一个参数(key,在Memcache::set时设置) (8) Memcache::replace 对一个已有的key进行覆写操作. [...]
Windows下的Memcache安装
很多phper不知道如何在Windows下搭建Memcache的开发调试环境,最近个人也在研究Memcache,记录下自己安装搭建的过程
其实我开始研究Memcache的时候并不知道居然还有memcached for Win32这个鸟东西,害得我在CnetOS下折腾1天才搞定,今天突然发现Windows下的Memcache进行开发调试完全没有问题,所以写篇Memcache的文档分享给大家
Windows下的Memcache安装:
1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached
2. 在终端(也即cmd命令界面)下输入 c:\memcached\memcached.exe -d install 安装
3. 再输入: c:\memcached\memcached.exe -d start 启动NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动这样服务器端已经安装完毕了
4.下载php_memcache.dll,请自己查找对应的php版本的文件
5. 在C:\winnt\php.ini 加入一行 extension=php_memcache.dll
6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!
memcached 像是一个后台服务器(也有客户端的memcached),memcache是php的一个模块,需要编译,像是一个客户端,memcached 和 memcache 是紧密结合的两个东西。 另外memcached也是一个客户端的.这点可以参考php手册得知.两者的区别也可以参考:http://www.cnblogs.com/scotoma/archive/2011/02/15/1955573.html 有关linux下memcache和memcached的安装方法请参考:http://blog.haohtml.com/archives/9841 ================================ 说法一: 两个不同版本的php的memcached的客户端 new memcache是pecl扩展库版本 new memcached是libmemcached版本 功能差不多. 说法二: Memcache是什么? Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。 它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。 Memcached是简单而强大的。它简单的设计促进迅速部署,易于发展所面临的问题,解决了很多大型数据缓存。它的API可供最流行的语言。 Memcache的知名用户有:LiveJournal、Wikipedia、Flickr、Bebo、Twitter、Typepad、Yellowbot、Youtube 等。 Memcache官方网站:http://memcached.org/ Memcached又是什么? Memcache是该系统的项目名称,Memcached是该系统的主程序文件,以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,使用共享内存存取数据。 那PHP中的Memcache是什么? php中的所讲的memcache是用于连接Memecached的客户端组件。 简单的说一句话:Memcached 是一个服务(运行在服务器上的程序,监听某个端口),Memcache 是 一套访问Memcached的api。 两者缺一不可,不然无法正常运行。Memcache能在多台服务器上发挥很好的作用,同台服务器上用APC或Xcache效率是很可观的。 同台服务器上APC的效率是Memcached的7倍,APC效率比Memcached高是肯定的
mysql 5.1支持触发器以及自定义函数接口(UDF)的特性,如果配合libmemcache以及Memcached Functions for MySQL,就能够实现memcache的自动更新。简单记录一下安装测试步骤。
安装步骤
安装memcached,这个步骤很简单,随处可见
安装mysql server 5.1RC,安装办法也很大众,不废话了
编译libmemcached,解压后安装即可./configure; make; make install
编译Memcached Functions for MySQL,在http://download.tangent.org/找一个最新的版本下载就是,./configure --with-mysql=/usr/local/mysql/bin/mysql_config --libdir=/usr/local/mysql/lib/mysql/
1、 安装文件准备
1)、Memcache的服务器端程序:当前最新版本号为
下载地址:http://www.danga.com/memcached/
2)、Memcache的安装先决条件:先安装libevent,当前最新版本号为
Libevent介绍:libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名的用于apache的php缓存库memcached据说也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。
下载地址:http://download.chinaunix.net/download/0006000/5804.shtml