Browsing the archives for the memcached tag

Memcached深度分析

in 网络编程

Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减 少数据库负载,提升性能。关于这个东西,相信很多人都用 过,本文意在通过对memcached的实现及代码分析,获得对这个出色的开源软件更深入的了解,并可以根据我们的需要对其进行更进一步的优化。末了将通 过对BSM_Memcache扩展的分析,加深对memcached的使用方式理解。 本文的部分内容可能需要比较好的数学基础作为辅助。 ◎Memcached是什么 在阐述这个问题之前,我们首先要清楚它“不是什么”。很多人把它当作和SharedMemory那种形式的存储载体来使用,虽然memcached使用了 同样的“Key=>Value”方式组织数据,但是它和共享内存、APC等本地缓存有非常大的区别。Memcached是分布式的,也就是说它不是 本地的。它基于网络连接(当然它也可以使用localhost)方式完 成服务,本身它是一个独立于应用的程序或守护进程(Daemon方式)。

0 Comments

Discuz!的Memcache缓存实现

in 网络编程, 设计重构

前言: 在PHP+MySQL架构的站点中,本文重点从MySQL的角度去分析如何使Discuz!论坛(或者类似的PHP+MySQL架构的程序)应对大访问量。同时给出一些使用Memcache去减轻MySQL压力的建议。其中很多数据是个人测试的结果,如有不同意见,敬请留言告之。另外由于个人思维的问题,行文比较跳跃,特此声明! 系统分析: 单纯的从MySQL的角度出发,单台MySQL的数据库负载到每天上亿次的操作(每秒大概1100次MySQL操作,然后乘以86400)应该不是非常困难的事情。按照这个数据也就是说一个单MySQL服务器的论坛来说可以跑到2千万PV是不成问题的,我相信国内绝大部分的论坛都不可能做到每天2千万的PV,但实际情况并不是如此。当论坛PV超过百万的时候一台WEB早已经不堪重负了。

0 Comments

缓存为王:Memcached和MySQL的结合应用

in 数据库类

在计算机和网络的世界里,缓存无处不在,从CPU的寄存器到一级缓存二级缓存,从硬盘的文件到阵列卡的缓存到文件的缓存,从浏览器的缓存到web服务器的缓存到数据库的缓存,Cache is King。 Memcached是一个分布式的内存缓存系统,在很多大型网站中都有成功的应用案例。设计思想说起来也很简单,服务器端保存精悍而独立,基本上就是一个slab对象缓存管理器,而在客户端实现负载均衡,采用hash算法来选择不同的服务端缓存key-value数据。

0 Comments

memcached for win32

in 服务器类

memcached是由livejournal团队(danga.com)制作的开源缓存软件,是缓存机制的一种实现,用它之所以高效,是因为它是利用了内存,使用好了能够大大加快页面或者是其它程序的执行速度。要注意的是一旦服务器停止,内存中的缓存数据会被清空。

win32下,需要启动memcached服务,首先下载相关的memcached文件(用于启动服务的windows.rar在附件中),解压后可以自己选择,这里我选择的是2.1版本的,将其中的memcached.exe和memcached.ini(里面也就这俩文件)拷贝到某路径下(如:E:\java\memcached2.1),然后通过cmd命令窗口,先转入到该路径,然后按如下步骤输入:

0 Comments

windows下memcached的安装(转载)

in 服务器类

Memcached是什么:
Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。
首先我在windows下实现它,过后再在linux试试.
下载memcached-win32 和php_memcache.dll(要和php的版本对应上)

1.memcahced下载后,压缩之前发现不到100K,压缩后也不到200K,这东西居然有这么神奇,放到C盘,进入目录里面有一个memcached.exe,双击就启动了,让窗口开着,或者在cmd里面c:\memcached\memcached.exe -d start 都可以启动.

0 Comments

修改WINDOWS下的MEMCACHED下的服务端口

in 服务器类

一直耿耿于本地的Memcached端口与服务器的不一样,老是要修改配置文件。 看了N久memcached.exe的帮助,在安装服务的时候,都没有办法指定参数。 在命令模式下,可以使用 memcached -p 12345 去指定端口,可服务安装后,却总是只有 -d runservice 的参数。 后来想到,可以通过修改注册表来达到这个修改端口的目的。 然后在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server 下面找到一个 ImagePath 的字符串项,正好是服务的执行路径的字符串,双击该串,在后面加入 -m 45 -p 12345 (使用45M内存,12345为端口),再启动服务。

0 Comments

[缓存加速]eAccelerator与memcached的区别与用途

in 服务器类, 网络编程

 eAccelerator和memcached,是目前较为主流的两个可使用在PHP之中的缓存加速工具.     eAccelerator专门为PHP开发,而memcached不仅仅用在PHP之中,其他所有的语言都可以使用.  eAccelerator的主要功能:     1. 缓存PHP文件的执行代码:在被缓存的代码再次被调用时,将直接从内存读取,从而在很大程度了PHP运行的速度.     2. 提供了共享内存操作函数:用户可以将自己的常见非资源对像,保存到内存之中,并可以随时读取出来.  memcached的主要功能:  提供共享内存操作函数,可以保存和读取数据  两者的共同点:  共同点:都提供了共享内存操作函数,可以用来保存和读取自己的数据  两者的区别:  eAccelerator作为PHP的扩展库存在,那么仅在PHP运行时,可以操作和读写共享内存,一般情况,只能由操作共享内存的程序自己调用.     同时,eAccelerator可以缓存PHP程序的执行代码,提升程序的调入和执行速度.  memcached主要作为一个共享内存服务器,其PHP扩展库仅仅作为PHP到memcached的连接库存在,类似MySQL扩展库.因而,memcached可以完全脱离PHP,其共享的数据,可以被不同的程序调用.  根据两者的不同,我们将他们使用在真真需要的地方:  eAccelerator主要用于单机PHP提速,缓存中间数据.对于实时性高,但数据操作量小的情况下,非常实用.  memcached用于分布式或者集群系统,多台服务器可以共享数据.对于实时性高,同时数据操作量大的情况下,非常实用.

0 Comments

memcached安装+php使用手记

in 服务器类, 网络编程

本文简要介绍一下安装的情况,以及PHP模块memcache使用情况:

提要:
1。安装memcached服务器端
2。安装php对memcache支持模块
3。使用memcache情况,计数器、数据压缩
4。Memcache内存的更新清理(delete flush)
5。内存超量的测试(set)

1。安装memcached服务器端
memcached安装说明(北南南北的站):
http://www.linuxsir.org/main/?q=node/184

0 Comments

memcached与memcache的区别

in 服务器类

 memcached 像是一个后台服务器,memcache是php的一个模块,需要编译,像是一个客户端,memcached 和 memcache 是紧密结合的两个东西。

0 Comments

让memcached和mysql更好的工作

in 服务器类, 网络编程

  这次是Fotolog的经验,传说中比Flickr更大的网站,Fotolog在21台服务器上部署了51个memcached实例,总计有254G缓存空间可用,缓存了多达175G的内容,这个数量比很多网站的数据库都要大的多,原文是A Bunch of Great Strategies for Using Memcached and MySQL Better Together,我这里还是选择性的翻译以及按照我的理解补充,感谢Todd Hoff,总能给我们一些学习的案例,从这里也能看出国外技术的开放态度,不似我们,其实就那么点小九九还藏着掖着,好了,进入正题。

一、关于memcached

  还不知道这个?那你去面试的时候要吃亏了,赶紧去官方网站看一下http://www.danga.com/memcached/,另外google一下用法,硬盘总是太慢,把数据存在内存里面吧,如果你只有一台服务器,推荐用一下APC(Facebook在用)或者eaccelerator或者Xcache(国人开发的),这些产品单机效果更好,如果你需要分布式的缓存方案,那么用memcached吧。

0 Comments