当前位置:文档之家› 蒙古及邻区上地幔顶部Pn速度结构_汪素云_裴顺平_胥广银_高阿甲

蒙古及邻区上地幔顶部Pn速度结构_汪素云_裴顺平_胥广银_高阿甲

蒙古及邻区上地幔顶部Pn速度结构_汪素云_裴顺平_胥广银_高阿甲
蒙古及邻区上地幔顶部Pn速度结构_汪素云_裴顺平_胥广银_高阿甲

第56卷第12期2013年12月

地 球 物 理 学 报

CHINESE JOURNAL OF GEOPHYSICS

Vol.56,No.12

Dec.,2013

汪素云,裴顺平,胥广银等.蒙古及邻区上地幔顶部Pn速度结构.地球物理学报,2013,56(12):4106-4112,doi:10.6038/cjg20131215.Wang S Y,Pei S P,Xu G Y,et al.Pn velocity structure at the uppermost mantle of Mongolia and neighboring regions.ChineseJ.Geophy

s.(in Chinese),2013,56(12):4106-4112,doi:10.6038/cjg20131215.蒙古及邻区上地幔顶部Pn速度结构

汪素云1,裴顺平2,胥广银1,高阿甲1

1中国地震局地球物理研究所,北京 100081

2中国科学院青藏高原研究所,大陆碰撞与高原隆升重点实验室,北京 100101

摘 要 利用78364条Pn射线的走时资料,采用地震层析成像方法反演蒙古及邻区上地幔顶部Pn速度结构.反演结果表明,蒙古及邻区Pn平均速度为8.08km/s,横向速度变化量从-0.39km/s至+0.30km/s.速度高异常区主要分布在阿尔泰山地区及准噶尔盆地、塔里木盆地等地,在阿尔泰山地区Pn速度最大异常达+0.30km/s.速度偏低的地区主要在贝加尔湖、华北平原、渤海湾等地,在贝加尔湖西南呈现出强烈的低速度异常达-0.39km/s,可能与该区新生代的火山活动有关.

关键词 蒙古,贝加尔湖,Pn速度,地震层析成像doi:10.6038/cjg

20131215中图分类号 P315,P541

收稿日期2013-01-29,2013-05-

14收修定稿基金项目 中华人民共和国科技部国际科技合作课题“远东地区地磁场重力场及深部构造观测与模型研究”(2011DFB20210)

和国家自然科学基金(41174036

)资助.作者简介 汪素云,女,研究员,主要从事地震活动与地幔顶部速度结构等研究.E-mail:wsy@cea-igp

.ac.cnPn velocity structure at the uppermost mantle of Mongolia and neighboring 

regionsWANG Su-Yun1,PEI Shun-Ping2,XU Guang

-Yin1,GAO A-Jia1

1 Institute of Geophysics,China Earthquake Administration,Beijing100081,China2 Institute of Tibetan Plateau,Chinese Academy 

of Sciences,Beijing100101,ChinaAbstract This paper uses the travel times of 78364Pn waves and seismic tomography to invertfor the Pn velocity structure at the top of upper mantle in Mongolia and neighboring 

regions.Theresult indicates that the Pn velocity is 8.08km/s on average and varies laterally between-0.39km/s and+0.30km/s.The high velocity anomalies are mainly distributed beneath the Altay 

mountains,Junggar basin,and Tarim basin;in the Altay mountain region the largest Pn anomaly 

reaches+0.30km/s.The regions of lower velocity include mainly Lake Baikal,North China Plain,andBohai Bay;to the southwest of Lake Baikal the strong low velocity anomaly reaches-0.39km/s,which isprobably related to the Cenozoic volcanic activity 

in the area.Key

words Mongolia,Lake Baikal,Pn velocity,Seismic tomography1 引 言

许多学者利用地震体波和面波走时反演了中国

大陆地壳和上地幔三维速度结构[1-

3].由于岩石圈强度受莫霍面(Moho

)温度所控制[4]

,并且温度反比于岩石中地震波传播的速度,因此,上地幔顶部速度变

化有可能反映岩石圈强度的变化,而岩石圈强度的

变化与地震活动的深部构造背景密切相关,因此,研究上地幔顶部速度结构是了解强震发生的深部构造背景、研究强震发生机理的重要手段之一.要获取上地幔顶部速度结构,采用Pn层析成像方法比P波三维成像更可靠,这是由于Pn射线近乎水平地沿上地幔顶部传播,利用Pn波走时层析成像实质上

 12期汪素云等:蒙古及邻区上地幔顶部Pn速度结构是反演了上地幔顶层的二维速度结构,对所研究的

空间区域而言,利用Pn波层析成像技术比P波三维成像可获得更高的射线穿透密度.许多作者曾经利用Pn波走时层析成像方法研究过中国大陆地区的上地幔顶部速度结构[5-10],结果表明,Pn波速度横向变化与地壳上地幔的构造活动存在一定的联系,构造上活动地区往往是Pn波速度低的地区,而构造上稳定地区具有较高的Pn速度.本文研究范围为蒙古国及其周边地区(40°N—55°N,80°E—130°E),简称为中蒙地区,包括蒙古国、俄罗斯的贝加尔湖以及我国北部的新疆、内蒙古、东北等地.利用Pn波层析成像方法研究中蒙地区的上地幔顶部速度结构,对了解我国北部及相邻地区强震活动的深部构造背景,理解强震发生机理与地震预测都有重要意义.同时为了解贝加尔裂谷的形成机制和演化过程[11-12]提供结构约束.

2 资 料

为保证研究区(40°N—55°N,80°E—130°E),尤其是边界地区内有足够多的射线和广泛的覆盖,将用于反演的数据选取范围向四周各扩展5°,研究范围为(35°N—60°N,75°E—135°E).图1给出了研究区的地势及基本的构造信息.

Pn震相到时数据主要来自中国地震年报(1985—2011年)以及ISC(International SeismologicalCentre)报告(1964—2011年);从地震报告中粗选出震中距≤9°的Pn波震相及少量震中距为9°~12°的P波震相,共得到25884次地震在507个地震台站上记录到的279424条震相到时数据.

为了取得可靠的反演结果,在反演过程中经过反复试验,进一步确定从上述资料中选用的Pn射线应符合以下条件:①震中距在1.8°~10°之间;②走时残差≤3.0s;③每个地震的Pn射线数≥5条;

④每个地震台站的Pn射线数≥5条.按上述条件共选出7871次地震在401个地震台站上记录到的Pn射线78364条,其中震中距在9°范围内的射线占总数的95%.用迭代最小二乘法对Pn走时随震中距的变化进行线性拟合,得出拟合直线的斜率的倒数(平均速度)为8.08km/s.

图2a,2b分别给出了Pn射线路径和射线密度图.从图中可见,射线基本覆盖蒙古及邻区,在贝加尔湖及我国天山地区射线覆盖最密,而在蒙古东部地区射线覆盖较稀甚至缺失.3 方 法

根据Hearn[13-14]的方法,可以将Pn射线的走时残差用于同时反演上地幔顶部速度的横向变化和各向异性的变化.从图2中可见,射线路径的方位分布不均匀,难以给出可信的各向异性结果,所以本文仅考虑速度的横向变化.由于Pn震相的射线路径是从地壳内的震源向下到达Moho面,并沿上地幔顶部传播,然后折回地壳到达接收台站,因此可将射线路径分为三段:①震源路径;②地幔路径;③台站接收路径.其中路径①和③是在地壳内,在这两段内的走时与地壳厚度、地壳速度及震源深度有关,路径②在上地幔顶部,其走时与上地幔顶部速度变化有关.将上地幔顶部划分成n个速度网格,Pn走时残差可用以下方程组表示:

tij=ai+bj+Σdijksk,

式中ti

是第i个台站与第j个地震间的走时残差;ai是i台站静延迟项,它与台站下面的地壳厚度和

速度的变化有关;b

是j地震静延迟项,它不仅与震中下面的地壳厚度和速度有关,而且与地震震源深

度有关;di

jk

是第j个地震至第i个台站的射线经过第k个速度网格的长度;sk是第k个速度网格的慢度(即速度的倒数)变化.用预条件LSQR共轭梯度最小二乘的迭代算法求解上述方程组,迭代次数为60次.

经过多次试验,如:网格大小取20′×20′和30′×30′;待求解的慢度阻尼常数取为500、700、900等.然后,对各种试验结果进行对比分析,使获得的反演结果既能稳定地反映主要结构特征又能抑制过多的噪声干扰.最后反演中选定的网格大小为30′×30′,阻尼常数取为500.

4 结 果

利用Hearn[14]的反演程序,反演得到Pn速度相对于平均速度8.08km/s的横向变化;台站延迟及地震延迟图像.利用bootstrap方法估计解的误差[15],文中做了60次bootstrap反演,给出了解的标准误差分布.反演前后走时残差分布的统计结果表明:在反演前Pn走时残差的标准差为1.56s,在反演后Pn走时残差的标准差降低到0.80s.4.1 结果的分辨率

由于LSQR算法不能直接给出分辨率矩阵,本

地球物理学报(Chinese J.Geophys.)56卷

 

图1 研究区构造简图

Fig.1 Sketch tectonic map of the study 

are

a图2 Pn射线路径分布(a)及射线密度(b

)图Fig.2 Path distribution(a)and ray 

density(b)of Pn waves8

014

 12期汪素云等:蒙古及邻区上地幔顶部Pn速度结构

文采用测试板(checkboard)方法测试结果的分辨率.即对文中的射线分布,用不同尺度(如:2°×2°,3°×3°,4°×4°等)的测试板,施加幅值为+0.3km/s与-0.3km/s的正弦函数速度扰动模型计算理论走时残差,然后对这组理论走时残差方程进行反演,看能否恢复给定的速度扰动模型.图3给出了结果的分辨率.

结果表明,在大部分地区分辨率达3°×3°;在射线密集区如:准噶尔盆地、塔里木盆地、贝加尔湖地区,每个网格经过的射线数≥100条,因此,分辨率达到2°×2°.相反,在研究区东北边缘部分及蒙古的东部,由于台站及地震都较少,射线分布稀疏,分辨率不足3°×3°.

4.2 速度横向变化特征

图4a给出了速度横向变化图像,图中用颜色的变化表示速度的变化,红色代表低速异常,蓝色表示高速异常.相对于平均速度8.08km/s,速度变化从-0.39km/s至+0.30km/s,即速度变化从-7.69km/s至+8.38km/s.经60次bootstrap反演,得出了速度横向变化误差分布图(图4b).图中显示,除研究区边缘射线稀少地区误差达到0.07km/s外,绝大部分(91%)的地区横向速度变化误差均不超过0.05km/s,因此,图4a中速度变化绝对值高于0.1km/s的速度异常区是可信的.

4.2.1 蒙古和贝加尔湖地区速度变化特征

从图4a中可以看到,蒙古高原Pn速度变化不大(-0.13~+0.13km/s),平均速度为8.08km/s.蒙古西部与我国接壤的阿尔泰山地区Pn速度呈现明显的高速异常,最大异常达0.30km/s.贝加尔湖周围地区速度变化较大(-0.39~+0.20km/s),总体速度偏低,贝加尔湖湖区Pn速度相对较低,强烈的低速度异常出现在贝加尔湖西南,最大异常达-0.39km/s,刚好对应于Tunkin盆地火山,贝加尔湖周围的其他几个火山和低速异常也有较好的对应关系.而贝加尔湖西侧的西伯利亚地台则是明显的高速异常.该结果与Yakovlev等[16]的结果是一致的,Yakovlev等[16]在贝加尔地区地壳上地幔三维速度结构的研究中指出,贝加尔湖裂谷带的西南侧呈现出很低的速度异常,是与该区新生代的火山活动有关的.

4.2.2 中国北部地区速度变化特征

在中国北部地区得到的Pn速度变化趋势与作者以前的结果[5-9]大体一致,东部与西部存在明显差异,大致在110°E以西为速度高异常区,以东则为速

度低异常区.

西部地区速度变化以高速异常为主,最高速度异常为0.30km/s:高速异常区主要是沿青藏高原隆起区的周边分布.速度高的几个强异常区与准噶尔盆地、塔里木盆地及鄂尔多斯高原等在空间位置上有较好的契合关系.

东部地区速度变化以低速异常为主,最低速度异常为-0.28km/s:我国东部Pn低速异常区主要分布在华北平原、山西地堑北部的大同盆地新生代火山岩地区及渤海湾附近等地.

5 讨 论

上述各地区Pn速度的明显差异与所处的构造应力环境有关,本文收集了研究区内158个M≥4.5级地震的震源机制解[17-19],其中正断层型(P轴倾角≥45°)的地震14个;逆断层型(T轴倾角≥45°)的地震68个;走滑断层型(P轴和T轴倾角均<45°)的地震76个,图5展示了速度横向变化与震源机制解分布图.

从图5可见,呈现低速度异常的贝加尔湖地区是正断层型地震集中分布的地区,表明该区处于最大主压应力轴(P轴)呈近于垂直和最大主张应力轴(T轴)呈近于水平的张性应力状态中,熊熊等[20]利用区域均衡重力异常资料反演了蒙古—贝加尔地区上地幔小尺度对流流场及作用于岩石层底部的应力场,结果显示贝加尔裂谷区下存在地幔上升流,对流应力场呈拉张状态.

呈现高速度异常的阿尔泰山地区以及夹在两个高速度异常区准噶尔盆地与塔里木盆地之间的天山地区是逆断层地震集中分布的地区,表明该区处于最大主张应力轴(T轴)呈近于垂直和最大主压应力轴(P轴)呈近于水平的挤压应力状态中.

走滑型地震广泛分布,主要分布在研究区的中、东部,该区处于最大主压应力轴(P轴)与最大主张应力轴(T轴)均呈近于水平状态的剪切型应力状态中.

产生这种应力状态的主要原因是由于中蒙地区位于欧亚板块内,处于太平洋和印度洋两大板块构造边界的动力作用之下[20-23].研究区东部(包括我国东部的华北等地区)为近东西向作用的太平洋板块俯冲带动力背景区,该区地震以走滑断层活动为主形成剪张型动力环境;而西部则为近南北向作用的印度板块动力背景区,该区地震以逆断层活动为主,

地球物理学报(Chinese J.Geophys.)56卷

 

图3 分辨率分别为3°×3°(a)和2°×2°(b)的检测板测试图Fig

.3 Checkerboard test with resolution of 3°×3°(a)and 2°×2°(b

)图4 速度横向变化图像(a)及其误差分布(b

)图(a)中颜色的变化显示了速度异常的变化,红色表示低速异常,蓝色表示高速异常.图(b

)中红色表示误差较大而绿色表示误差较小.Fig.4 (a)Lateral variation of velocity 

and(b)error distributionThe colors in(a)represent velocity variation,red means low velocity anomaly and blue meanshigh velocity 

anomaly.In(b)red color stands for larger error and green for smaller error

.图5 Pn速度变化与震源机制解分布图Fig.5 Pn velocity 

variation and focal mechanisms0

114

 12期汪素云等:蒙古及邻区上地幔顶部Pn速度结构

形成挤压型动力环境;位于西伯利亚板块东南缘的贝加尔裂谷带的地震以正断层活动为主,形成拉张型动力环境.因此,可以认为东部以Pn速度低值异常为主要特征的速度分布形态与太平洋板块俯冲动力作用引起的东部地区地壳的伸展减薄和伴生的岩浆活动有关;而西部以Pn速度高值异常为主体的区域(如,准噶尔盆地、塔里木盆地等),则是印度板块强烈碰撞挤压动力作用所形成的影响区.

6 结 论

本文利用Pn走时资料,采用地震层析成像方法,反演了蒙古及邻区上地幔顶部Pn速度结构.结果表明:

(1)蒙古高原Pn速度变化不大(-0.13~+0.13km/s),平均速度为8.08km/s.蒙古西部与我国接壤的阿尔泰山地区Pn速度呈现明显的高速异常,最大异常达0.30km/s.贝加尔湖地区总体速度偏低,贝加尔湖西南呈现出强烈的低速度异常达-0.39km/s,可能与该区新生代的火山活动有关.(2)在中国北部地区得到的Pn速度变化东部与西部存在明显差异,大致在110°E以西为速度高异常区,以东则为速度低异常区.

(3)构造上稳定的克拉通地台具有较高的Pn速度,如准噶尔盆地、塔里木盆地、柴达木盆地等;而构造上活动的强烈剪切变形带和新生代扩张盆地往往是速度低的地区,如:华北断陷盆地,贝加尔湖裂谷带.

(4)速度异常还可能与应力环境有关.挤压环境呈现速度高异常,如研究区的西部,主要受到印度板块与欧亚板块的碰撞挤压作用而处于近南北向的挤压状态中,因而呈现总体高速度异常;拉张环境呈现速度低异常,如研究区北部的贝加尔湖地区,以及东部大同盆地和渤海湾.

由于反演结果的可信度在很大程度上取决于数据的数量及质量,在研究区的边缘部分及蒙古地区,射线覆盖较稀,分辨率不足3°×3°,还需补充与积累数据后进一步研究.

致 谢 本文图件采用GMT[24]绘制,数据来源于中国地震局台网中心、ISC和蒙古科学院,特此致谢.同时感谢两位匿名评审人提出的宝贵建议.

参考文献(References)

[1] 宋仲和,陈国英,安昌强等.中国大陆及其海域地壳—上地

幔三维速度结构.中国科学(B辑),1993,23(2):180-188. Song Z H,Chen G Y,An C Q,et al.3DS-wave velocitystructure of the crust and upper mantle.Science China

(Chemistry),1994,37(1):104-116.

[2] 胥颐,刘福田,刘建华等.中国大陆西北造山带及其毗邻盆地的地震层析成像.中国科学(D辑),2000,30(2):113-

122.

Xu Y,Liu F T,Liu J H,et al.Tomography study of theorogens and basins in northwest China.Sci.Chin.Ser.D

(in Chinese),2000,30(2):113-122.

[3] Huang J L,Zhao D P,Zheng S H.Lithospheric structureand its relationship to seismic and volcanic activity in southwest

China.J.Geophys.Res.,2002,107(B10):ESE13-1-ESE13-

14,doi:10.1029/2000JB000137.

[4] Sonder L J,England P C.Effect of a temperature dependentrheology on large-scale continental extension.J.Geophys.Res.,1989,94(B6):7603-7619.

[5] 汪素云,Hearn T M,许忠淮等.中国大陆上地幔顶部Pn速度结构.中国科学(D辑),2001,31(6):449-454.

Wang S Y,Hearn T M,Xu Z H,et al.Velocity structure ofuppermost mantle beneath China continent from Pn tomography.Sci.Chin.Ser.D,2002,45(2):144-150.

[6] 裴顺平,许忠淮,汪素云等.新疆及邻区Pn速度层析成像.地球物理学报,2001,45(2):218-225.

Pei S P,Xu Z H,Wang S Y,et al.Pn velociy tomography inXinjiang,China and adjacent regions.Chinese J.Geophys.

(in Chinese),2001,45(2):218-225.

[7] Pei S P,Zhao J M,Sun Y S,et al.Upper mantle seismicvelocities and anisotropy in China determined through Pn and

Sn tomography.J.Geophys.Res.,2007,112(B5):B05312,doi:10.1029/2006JB004409.

[8] 许忠淮,汪素云,裴顺平.青藏高原东北缘地区Pn波速度的横向变化.地震学报,2003,25(1):24-31.

Xu Z H,Wang S Y,Pei S P.Lateral variation of Pn velocitybeneath norteastern marginal region of Qingzang plateau.Acta Seismologica Sinica(in Chinese),2003,25(1):24-31.[9] Hearn T M,Wang S Y,Ni J F,et al.Uppermost mantlevelocities beneath China and surrounding regions.J.Geophys.Res.,2004,109(B11),doi:10.1029/2003JB002874.[10] 司少坤,田小波,张洪双等.贝加尔裂谷区地幔过渡带大范围增厚与局部减薄现象及其动力学意义.中国科学———地球

科学,2012,42(11):1647-1659,doi:10.1007/s11430-012-

4547-4.

Si S K,Tian X B,Zhang H S,et al.Prevalent thickeningand local thinning of the mantle transition zone beneath the

Baikal rift zone and its dynamic implications.Science China

Earth Sciences,2013,56(1):31-42.

[11] 张建利,田小波,张洪双等.贝加尔裂谷区地壳上地幔复杂的各向异性及其动力学意义.地球物理学报,2012,55(8):2523-2538,doi:10.6038/j.issn.0001-5733.2012.08.005.

Zhang J L,Tian X B,Zhang H S,et al.The crust and uppermantle anisotropy in Baikal Rift Zone and its dynamic

地球物理学报(Chinese J.Geophys.)56卷 

significance.Chinese J.Geophys.(in Chinese),2012,55(8):2523-2538,doi:10.6038/j.issn.0001-5733.2012.08.005.

[12] Pei S P,Sun Y S,Toks z M N.Tomographic Pn and SnVelocity beneath the Continental Collision Zone from Alps to

Himalaya.J.Geophys.Res.,116(B10),doi:10.1029/

2010JB007845.

[13] Hearn T M,Beghoul N,Barazangi M.Tomography of thewestern United States from regional arrival times.J.Geophys.Res.,1991,96(B10):16369-16381.

[14] Hearn T M.Anisotropic Pn tomography in the westernUnited States.J.Geophys.Res.,1996,101(B4):8403-

8414.

[15] Hearn T M,Ni J F.Pn velocities beneath continentalcollision zones:the Turkish-Iran Plateau.Geophys.J.Int.,1994,117(2):273-283.

[16] Yakovlev A V,Koulakov I Y,Tychkov S A.Moho depthsand three-dimensional velocity structure of the crust and upper

mantle beneath the Baikal region,from local tomography.Russian Geology and Geophysics,2007,48(2):204-220.

[17] 许忠淮,汪素云,高阿甲等.我国部分早期震源机制解答的重新测定.地震地磁观测与研究,1994,15(5):1-9.

Xu Z H,Wang S Y,Gao A J,et al.Redetermination ofsome early focal mechanism solutions of Chinese earthquakes.Seismological and Geomagnetic Observation and Research(in

Chinese),1994,15(5):1-9.

[18] Dziewonski A M,Chou T A,Woodhouse J H.Determinationof earthquake source parameters from waveform data for

studies of global and regional seismicity.J.Geophys.Res.,1981,86(B4):2825-2852.

[19] International Seismological Centre.Global Centroid Moment Tensor,2011.

[20] 熊熊,单斌,王继业等.蒙古—贝加尔地区上地幔小尺度对流及地球动力学意义.地球物理学报,2010,53(7):1594-

1604,doi:10.3969/j.issn.0001-5733.2010.07.010.

Xiong X,Shan B,Wang J Y,et al.Small-scale upper mantleconvection beneath the Mongolia-Baikal Rift Zone and its

geodynamic significance.Chinese J.Geophys.(in Chinese),2010,53(7):1594-1604,doi:10.3969/j.issn.0001-5733.2010.07.010.

[21] 时振梁,环文林,曹新玲等.我国强震活动和板块构造.地质科学,1973,3(4):281-292.

Shi Z L,Huan W L,Cao X L,et al.On the intensive seismicactivity in China and its relation to plate tectonics.Chinese

Journal of Geology(in Chinese),1973,3(4):281-292.[22] 时振梁,环文林,卢寿德等.中亚、东亚大陆地震活动特征.中国科学(B辑),1982,12(9):840-849.

Shi Z L,Huan W L,Lu S D,et al.On the characteristics ofseismic activity in central and eastern Asia continent.Scientia

Sinica(B),1982,26(4):438-448.

[23] 张国民,汪素云,王辉.东亚地区上地幔顶部Pn速度结构的构造动力学意义.地震地质,2012,34(4):586-596,doi:10.3969/j.issn.0253-4967.2012.04.

Zhang G M,Wang S Y,Wang H.Tectonic implication ofcrust and uppermost mantle Pn velocity structure of Eastern

Asia.Seismology and Geology(in Chinese),2012,34(4):586-596,doi:10.3969/j.issn.0253-4967.2012.04.

[24] Wessel P,Smith W H F.New,improved version of theGeneric Mapping Tools released.EOS Trans.,1998,79

(47):579.

(本文编辑 何 燕)

2114

Memcached使用点滴

我对于Memcached的接触,还是在去年看了CSDN的一系列国外大型网站架构设计而开始的。最初的时候只是简单的封装了Memcached Java版的客户端,主要是对于配置的简化以及Memcached多点备份作了一些工作,然后就作为ASF的组件一部分提供给其他Team使用。其实看过Memcached Java客户端代码的人就会了解其实客户端的事情很简单,就是要有一套高性能的Socket通信框架以及对Memcached的私有协议实现的接口,自己去做这些事情也是很简单的,不过既然有可以满足自己需求的开源部分,那么就去实现自己需要的但没有实现的。这里我用的是Whalin的客户端版本,这里为什么还要提出来讲这个,后面会提到。 在对Java客户端作了简单封装和扩展以后,由于其他Team使用的没有什么特殊需求,也就没有再去做太多的修改,直到最近自己的服务集成平台需要做服务访问控制,才重新丰富了Cache组件,也就是这个过程中对于Memcached的一些特性和小的细节有了一些新的认识。 作为服务集成平台需要对服务有所监控,包括访问频率控制以及访问次数控制。频率控制其实很类似于硬件方面的频率控制,例如硬件可以对IP的高频率访问视为攻击,列入黑名单。而作为服务的访问,对于服务访问者的控制其实涉及到了业务参数,那么硬件就不是很适合去做这方面的控制,为此我也考虑了很久,最开始打算在Apache上做一个模块控制,但是最后觉得还是放在后面的业务框架上做这件事情。当然后面我说说的方案可能并不好,但是也算是一种想法。要把频繁的访问数据记录下来同时分析,那么数据库肯定是不行的,最简单的方式就是采用Cache,又因为是集群范围内的控制,那么集中式Cache就非Memcached莫数了(分布式的Cache传播本身损耗太大,集中式Cache本来的最大缺点就是单点,但作简单的备份操作就可以基本解决此类问题)。 作为解决这个问题的方法来说只需要实现两部分工作:访问计数器,定时任务。定时任务在我做日志分析框架的时候都是采用了Jdk5的Concurrent包里面的ScheduledExecutorService,这个作简单的循环任务足够用了,同时也是有很好的多线程异步支持,复杂一点么用Quartz。计数器就要靠Memcached来实现了,本来一般的Cache最大的问题就是高并发下的事务保证,如果采用Get+Set 来完成计数的话,那么高并发下计数器就会出现读写不一致性的问题,幸好Memcached提供了计数累加功能,让这种累加动作能够在服务端一次做好,服务端控制并发写入,保证数据的一致性。 下面就看看以下几个方法: boolean storeCounter(String key, long count):存储key的计数器,值为count。

simple-spring-memcached统一缓存的使用实例

simple-spring-memcached统一缓存的使用 实例 如何在一个中型的Java应用中使用Memcached缓存数据不是个简单的问题。当某个缓存数据需要在多个系统间共享和失效时,必须要有统一的规划才能保证不出错。经过各种实践,目前系统在使用Memcached缓存数据全部采用Simple-Spring-Memcached框架来完成,并统一规划各系统Spring和Cache key的配置。 下面对在使用过程中需要注意的点做一个详细说明: Cache整体规划 目前我们系统中有两个不同的Memcached服务器: 1session memcached服务器:主要存储用户的session 2app memcached服务器: 主要用于缓存应用数据 由于应用所有的缓存数据都放在app缓存上,为避免各应用的缓存数据出现冲突,必须规划好它们的命名空间。所幸Simple-Spring-Memcached支持namespace的概念,因此对各应用的namespace前缀规定如下: 应用namespace前缀 goodscenter goodscenter trade trade uic uic 这个namespace在生成key时,将放在最前面,稍后会有例子详述。 同一个应用中存在许多需要缓存的对象,因此约定namespace前缀之后再加上缓存对象的类名。 例子如下: 应用缓存对象完整的namespace 最终生成的key trade TcRate (id为42) trade:TcRate trade:TcRate:12 goodscenter GoodsDo(id为 42) goodscenter:GoodsDo goodscenter:GoodsDo:1 2 key的生成规则 Simple-Spring-Memcached提供的针对单个对象的注解接口提供了两种key生成方式,详情见此文

redis缓存技术学习

1 什么是redis redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 2 性能怎么样 Redis是一个高性能的key-value内存数据库。官方性能测试结果: set操作每秒110000次,get操作每秒81000次。 3 可不可以存对象 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。 4 Redis与memcache的最大区别 Replication(树形) data types(String、Lists、Sorted Sets、Hashes) persistence (snapshot、aof) 很多开发者都认为Redis不可能比Memcached快,Memcached完全基于内存,而Redis 具有持久化保存特性,即使是异步的,Redis也不可能比Memcached快。但是测试结果基本是Redis占绝对优势。一直在思考这个原因,目前想到的原因有这几方面。 Libevent。和Memcached不同,Redis并没有选择libevent。Libevent为了迎合通用性造成代码庞大(目前Redis代码还不到libevent的1/3)及牺牲了在特定平台的不少性能。Redis 用libevent中两个文件修改实现了自己的epoll event loop(4)。业界不少开发者也建议Redis

memcached 构建分布式缓存

Memcached 什么是Memcached 许多Web 应用程序都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大,访问的集中,就会出现REBMS的负担加重,数据库响应恶化,网站显示延迟等重大影响。 Memcached是高性能的分布式内存缓存服务器。一般的使用目的是通过缓存数据库查询结果,减少数据库的访问次数,以提高动态Web 应用的速度、提高扩展性。如图: Memcached的特点: Memcached作为高速运行的分布式缓存服务器具有以下特点。 1.协议简单:memcached的服务器客户端通信并不使用复杂的MXL等格式, 而是使用简单的基于文本的协议。 2.基于libevent的事件处理:libevent是个程序库,他将Linux 的epoll、BSD 类操作系统的kqueue等时间处理功能封装成统一的接口。memcached使 用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高 性能。 3.内置内存存储方式:为了提高性能,memcached中保存的数据都存储在 memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重 启memcached,重启操作系统会导致全部数据消失。另外,内容容量达

到指定的值之后memcached回自动删除不适用的缓存。 4.Memcached不互通信的分布式:memcached尽管是“分布式”缓存服务器, 但服务器端并没有分布式功能。各个memcached不会互相通信以共享信 息。他的分布式主要是通过客户端实现的。 Memcached的内存管理 最近的memcached默认情况下采用了名为Slab Allocatoion的机制分配,管理内存。在改机制出现以前,内存的分配是通过对所有记录简单地进行malloc 和free来进行的。但是这中方式会导致内存碎片,加重操作系统内存管理器的负担。 Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块,已完全解决内存碎片问题。Slab Allocation 的原理相当简单。将分配的内存分割成各种尺寸的块(chucnk),并把尺寸相同的块分成组(chucnk的集合)如图: 而且slab allocator 还有重复使用已分配内存的目的。也就是说,分配到的内存不会释放,而是重复利用。 Slab Allocation 的主要术语 Page :分配给Slab 的内存空间,默认是1MB。分配给Slab 之后根据slab 的大小切分成chunk. Chunk : 用于缓存记录的内存空间。 Slab Class:特定大小的chunk 的组。 在Slab 中缓存记录的原理 Memcached根据收到的数据的大小,选择最合适数据大小的Slab (图2) memcached中保存着slab内空闲chunk的列表,根据该列表选择chunk,然后将数据缓存于其中。

Memcached强大的缓存中间件

Memcached教程2018年5月30日

修改记录

Mencached 1.1介绍 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统,一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。相对于session缓存的话,session缓存占用内存太高,分布式的项目也只能用中间件缓存,所以session缓存将会推出历史舞台。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。 1.2第二步安装 获取Memcached 通过wget https://www.doczj.com/doc/5c18048439.html,/files/memcached-1.4.24.tar.gz下载最新源码。 安装Memcached 1、解压tar -xf memcached-1.4.24.tar.gz; 2、进入目录cd memcached-1.4.24/; 3、配置 ./configure; 1 /9

4、编译安装make&&make install; 其中&&表示前面的命令执行成功才会执行后面的命令; 安装完成后memcached的默认目录为/usr/local/bin/memcached 启动memcached 启动例子:memcached -u root -d 启动参数说明: -d 选项是启动一个守护进程。 -m 是分配给Memcache使用的内存数量,单位是MB,默认64MB。 -u 是运行Memcache的用户,如果当前为root 的话,需要使用此参数指定用户 -p 是设置Memcache的TCP监听的端口,最好是1024以上的端口。 -c 选项是最大运行的并发连接数,默认是1024。 -P 是设置保存Memcache的pid文件。 参考地址: https://https://www.doczj.com/doc/5c18048439.html,/article/e2284b2b6070eee2e7118d67.html 1.3第三步配置gitlab sudo gitlab-ctl reconfigure 注意:1、防火墙限制了端口,centos7 开放firewall端口 开发防火墙: sudo firewall-cmd--permanent--add-service=http 2 /9

memcached是一个高性能的分布式的内存对象缓存系统

memcached是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。最初为了加速LiveJournal 访问速度而开发的,后来被很多大型的网站采用。起初作者编写它可能是为了提高动态网页应用,为了减轻数据库检索的压力,来做的这个缓存系统。它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统,这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度!基于memcached作者对分布式cache的理解和解决方案。memcached完全可以用到其他地方比如分布式数据库,分布式计算等领域。 1、memcached 协议理解 memcache是为了加快https://www.doczj.com/doc/5c18048439.html,/访问速度而诞生的一个项目。 它的官方主页是:https://www.doczj.com/doc/5c18048439.html,/memcached/ 目前在网站开发中应用较少,主要的应用有: https://www.doczj.com/doc/5c18048439.html,/memcached/users.bml 在国内的网站开发中,还很少没见到有应用的,中文资料十分匮乏。 工作机制:通过在内存中开辟一块区域来维持一个大的hash表来加快页面访问速度,和数据库是独立的。但是目前主要用来缓存数据库的数据。允许多个server通过网络形成一个大的hash,用户不必关心数据存放在哪,只调用相关接口就可。存放在内存的数据通过LRU 算法进行淘汰出内存。同时可以通过删除和设置失效时间来淘汰存放在内存的数据。 2、memcached 使用入门 memcached最吸引人的地方主要在于它的分布式。分布式对于互联网应用来讲,按照用途基本上可划分为三种方式:分布式计算、分布式存储和两者兼而有之。memcached是分布式存储的一种。我们常见的分布式存储大多数是将N台设备(server或者单独的存储)构建成盘阵,而memcached旨在构建一个高速的内存池。更通俗一点来讲:分布式计算是将N颗cpu组装成一颗cpu,分布式慢速存储是将N个硬盘组装成一个大硬盘,memcached是将N块内存组装成一块大内存。 有个朋友问:那是不是代价很昂贵啊。我的回答是肯定的。如果你的网站规模只有三两台服务器的话,我觉得你就不用考虑这样的方案了,等你的网站做大了以后,再参考这方面的资料即可。一般都是比较大的互联网公司为了追求更好的用户体验,才进行这方面的投资,对他们来讲,用户体验至上,money是小case。 还有朋友问:有一些dbms提供内存表的功能,比如mysql的内存表,可以代替memcache d。但我要建议你的是:mysql的内存表确实起到同样的作用,但它的局限也很多,往往不能让你随心所欲,所以建议你不要走弯路。 二、memcached的应用场景 2.1 应用范围 memcached产品或相关技术的应用,我们在前面已经提到了一些。其实它的应用还是非常普遍的,应用作为广泛的领域:例如sns类网站、blog类网站、bbs类网站以及im后台服务。 2.2 sns类网站的应用 https://www.doczj.com/doc/5c18048439.html,是99年始于校园中的项目,有点像中国的校内网。几个学生纯属出于爱好做了这样一个网站,主要实现以下功能:sns、blog、bbs和rss等。livejournal从建立开始就采用了大量的开源软件,到现在它本身也衍生了不少开源软件。sns网站,现在比比皆是,规模比较大的象开心、校内、51,它们的页面上往往需要引用大量的用户信息、好友信息以及

memcached简单应用实例

Memcached的简单使用实例 最近一直在做一个项目的前期设计工作,考虑到后期系统的扩展和性能问题也找了很多解决方法,有一个就是用到了数据库的缓存工具memcached(当然该工具并不仅仅局限于数据库的缓存)。先简单的介绍下什么是memcached。 Memcached 是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。Memcached由Danga Interactive开发,用于提升https://www.doczj.com/doc/5c18048439.html,访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。上网baidu了很多东西,几乎都差不多,而且基于java的说的很少,所有只有在研究了各个其他语言类的应用后再来尝试在java上进行简单的操作应用。先从memcached上进行说明,memcached的最新版是采用c语言进行开发和设计的,据说旧版的是采用perl语言开发的,而且它是一个应用软件来的,是作为缓存服务器的服务器端运行在服务器上的,需要使用特定的语言编写客户端与其进行通信来进行数据的缓存和获取。通常我们是把memcached安装运行在web服务器上,然后通过对需要的数据进行缓存,据我目前所知,所有数据的缓存设置和存取操作,以及数据的更新后替换操作全部需要程序来进行,而不是自动进行的(自动不知道能不能成功,呵呵)。下面从一个实际的例子来应用memcached。 首先到https://www.doczj.com/doc/5c18048439.html,/memcached/下载memcached的windows版本和java客户端jar包,目前最新版本是memcached-1.2.1-win32.zip和java_memcached-release_1.6.zip,分别解压后即可!说明:window版本的memcache服务软件下载链接是无效的,我提供一个新的链接 https://www.doczj.com/doc/5c18048439.html,/memcached-win32/ 首先是安装运行memcached服务器,我们将memcached- 1.2.1-win32.zip解压后,进入其目录,然后运行如下命令: c:>memcached.exe -d install c:>memcached.exe -l 127.0.0.1 -m 32 -d start

memcached常用命令

memcached常用命令 1、启动Memcache 常用参数 -p 设置TCP端口号(默认设置为: 11211) -U UDP监听端口(默认: 11211, 0时关闭) -l 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问) -c max simultaneous connections (default: 1024) -d 以daemon方式运行 -u 绑定使用指定用于运行进程 -m 允许最大内存用量,单位M (默认: 64 MB) -P 将PID写入文件,这样可以使得后边进行快速进程终止, 需要与-d 一起使用 更多可以使用者memcached -h 在linux下:./usr/local/bin/memcached -d -u root -l 192.168.1.197 -m 2048 -p 12121 在window下:d:\App_Serv\memcached\memcached.exe -d RunService -l 127.0.0.1 -p 11211 -m 500 在windows下注册为服务后运行: sc.exe create M emcached_srv binpath= “d:\App_Serv\memcached\memcached.exe -d RunService -p 11211 -m 500″start= auto net start Memcached 2、连接和退出 telnet 127.0.0.111211 quit 3、基本命令 五种基本memcached 命令执行最简单的操作。这些命令和操作包括: set add replace get delete 前三个命令是用于操作存储在memcached 中的键值对的标准修改命令。它们都非常简单易用,且都使用如下所示的语法: command 参数说明如下:

Memcache入门及使用

一.系统核心优化 1. 介绍 战略:以最小的资源开销,提供一个最大访问量的网站服务。 二. 内存缓存memcache 1. memcache memcache是一种内存缓存技术。 memcache、redis、mongodb都是no-sql(非关系型数据库)的产品。 1.1 memcache和redis的异同 不同点: redis: 是一个新兴的内存缓存技术,支持String/list/set/sort set /hash多个数据类型 单个key存储数据量最大为1G

对各方面支持不健全(例如对windows系统没有支持) 支持持久化的 memcache: 是一个老牌的内存缓存技术,只支持String数据类型 单个key存储数据量最大为1M 对各个方面支持的比较好(例如各种系统都可以使用、各种框架[tp/yii等等]都可以直接使用、session也可以存储到memcache中) 不支持持久化 相同点: 数据都是在内存中存储的。 2. memcache使用 memcache是php语言操作内存的一个中间代理服务软件。 PHP 内存 Memcache 代理/介质 2.1 安装memcache服务器端

2.2 启动memcache服务 两种方式启动服务 ①前台启动

Ctrl+c 关闭前台服务 启动服务可以设置的参数:

上图启动memcache服务,端口为11230 本机允许访问分配128M的内存使用 ②制作为开机启动项服务 svn设置服务项目: sc create 名称 .... 之后可以看到服务项目已经ok

3. php操作memcache memcache是php里边的一个扩展。

分布式缓存系统Memcached入门指导

分布式缓存系统Memcached入门指导 摘要:这篇Memcached入门介绍涵盖的主题包括安装、配置、memcached 客户机命令和评估缓存效率,主要讨论与 memcached 服务器的直接交互,其目的是为您提供监控 memcahed 实例所需的工具。 首先介绍一下,memcached 是由 Danga Interactive 开发并使用 BSD 许可的一种通用的 分布式内存缓存系统 Memcached示意图(来自https://www.doczj.com/doc/5c18048439.html,) Danga Interactive 开发 memcached 的目的是创建一个内存缓存系统来处理其网站https://www.doczj.com/doc/5c18048439.html, 的巨大流量。每天超过 2000 万的页面访问量给 LiveJournal 的数据库施加 了巨大的压力,因此 Danga 的 Brad Fitzpatrick 便着手设计了 memcached。memcached 不仅减少了网站数据库的负载,还成为如今世界上大多数高流量网站所使用的缓存解决方案。 本文首先全面概述memcached,然后指导您安装memcached 以及在开发环境中构建它。我还将介绍 memcached 客户机命令(总共有 9 个)并展示如何在标准和高级 memcached 操作中使用它们。最后,我将提供一些使用 memcached 命令测量缓存的性能和效率的技巧。

如何将 memcached 融入到您的环境中? 在开始安装和使用 using memcached 之前,我们需要了解如何将 memcached 融入到您的环境中。虽然在任何地方都可以使用 memcached,但我发现需要在数据库层中执行几个经 常性查询时,memcached 往往能发挥最大的效用。我经常会在数据库和应用服务器之间设 置一系列 memcached 实例,并采用一种简单的模式来读取和写入这些服务器。图 1 可以帮助您了解如何设置应用程序体系结构: 图 1. 使用 memcached 的示例应用程序体系结构 体系结构相当容易理解。我建立了一个 Web 层,其中包括一些 Apache 实例。下一层是应用程序本身。这一层通常运行于 Apache Tomcat 或其他开源应用服务器之上。再下面一 层是配置 memcached 实例的地方—即应用服务器与数据库服务器之间。在使用这种配置时,需要采用稍微不同的方式来执行数据库的读取和写入操作。 读取 我执行读取操作的顺序是从 Web 层获取请求(需要执行一次数据库查询)并检查之前 在缓存中存储的查询结果。如果我找到所需的值,则返回它。如果未找到,则执行查询并 将结果存储在缓存中,然后再将结果返回给 Web 层。 写入 将数据写入到数据库中时,首先需要执行数据库写入操作,然后将之前缓存的任何受此写入操作影响的结果设定为无效。此过程有助于防止缓存和数据库之间出现数据不一致性。 安装 memcached memcached 支持一些操作系统,包括 Linux?、Windows?、Mac OS 和 Solaris。在本文中,我将详细介绍如何通过源文件构建和安装 memcached。采用这种方式的主要原因是我在遇 到问题时可以查看源代码。 libevent libevent 是安装 memcached 的唯一前提条件。它是 memcached 所依赖的异步事件通知库。您可以在 https://www.doczj.com/doc/5c18048439.html, 上找到关于 libevent 的源文件。接下来,找到其最新版本的源文

Memcached的最佳实践和内部机制(译)

MEMCACHED 的最佳实践和内部机制 译) 的最佳实践和内部机制(译
原始文章 Memcached Internals 是在 2008 年 MySQL Conf 上的一篇 https://www.doczj.com/doc/5c18048439.html,/2008/04/22/mysql-conf-memcached-internals/ 本文对 memcached 的使用提出了一些建议,并讲述了一些 memcached 内部的一些实现机制.是我们 可以更好的理解应用 memcached.
MEMCACHED 的最佳实践
Memcached 是一个高性能的分布式缓存系统,它是独立应用的,当前被许多大型的网站使用,比如 Facebook(在 2008 年第一季度有 2TB 的缓存), Livejournal, Mixi, Hi5 等,然而他也是一个极端简单 的软件:所有的逻辑在客户端,没有安全模型,容灾处理,备份机制或持久化.然而这些并不影响他被开 发这发布到各种情况的环境中,如下有 Brian 做的一些关于 memcached 的最佳时间的建议: 1.不要想行级别(数据库)的缓存,考虑复杂对象. 2.不要在数据库服务器上运行 memcached,给你的数据库提供一切可能使用的内存. 3.不要担心 TCP 的延迟-本机的 TCP/IP 已经被优化为内存拷贝. 4.考虑 multi-get-在任何可能的情况下用并发来处理事情. 5.不是所有的 memcached 客户端都是等同的,做你自己的调研.-提示使用 Brians 的.
片分配器-MEMCACHED 的心脏 片分配器
memcached 的心脏是他的内存片分配器,第一感觉令人有点畏惧,但是当你明白他架构中所采用的平衡 机制等,你会从内心中体会出他确实是一个高雅的解决方案. 1.memcached 所能分配的内存最大值仅由系统的架构决定(32/64 位) 2.key 值大小限制到 250 字节,data 值大小限制到 1mb 3.在启动时,memcached 获取需要的内存-在性能前浪费内存 4.分配的内存由片分配器切分为不同大小的桶. 5.默认情况下片分配器将创建 32-39 个桶用来存放最大到 1mb 大小的对象. 6.你可以在编译时设置页大小,并在启动时设置片大小. 7.每一个被存储的对象存在最相近大小的桶中-是的,内存是被浪费的. 8.碎片是个问题-无论是定义片大小或时常回收/冲刷你的缓存. 9.如果在一个不同的片类中没有未被使用的内存,该内存将在需要的时候被重分配. 10.保证 no-paging,禁用你系统的交换空间(swap)-实用的是将他变小来避免出问题.
内存管理
内存管理使用的是 LRU 算法 1.每一个片类有他自己的 LRU-回收目标依赖于对象的大小 2.没秒钟检查一次截止时间戳-最小寿命是 1 秒 3.异步处理被标志为删除的对象-每 5 秒检查回收一次 4.上面两个时间的不一致会导致次最佳回收规则 5.可以完全禁用 LRU-这样做自己担当风险
关于失效和截止期的最佳实践
Memcached 不提供任何关于删除一个相关联 key 集合(对象,名称等等)的机制.不管是好是坏,你需要 在 prepend 和 append 命令的帮助下自己实现该功能,然而,需要小心这个 1mb 大小的限制.一个非常 简单的处理该情况的方式是完全放弃一起失效过程.

web常用的常用缓存技术有哪些此贴一网打尽

web常用的常用缓存技术有哪些?此贴一网打尽! 1、Opcode缓存 首先php代码被解析为Tokens,然后再编译为Opcode码,最后执行Opcode码,返回结果;所以,对于相同的php文件,第一次运行时 可以缓存其Opcode码,下次再执行这个页面时,直接会去找到缓存下的opcode码,直接执行最后一步,而不再需要中间的步骤了。2、内存式缓存提到这个,可能大家想到的首先就是Memcached;memcached是高性能的分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。它就是将需要缓存的信息,缓存到系统内存中,需要获取信息时,直接到内存中取;比较常用的方式就是key–>value方式; <?php $memcachehost = '192.168.6.191'; $memcacheport = 11211;

$memcachelife = 60; $memcache = new Memcache; $memcache->connect($memcachehost,$memcacheport) or die ("Could not connect"); $memcache->set('key','缓存的内容'); $get = $memcache->get($key); //获取信息 ?>复制代码3、php APC缓存扩展Php有一个APC 缓存扩展,windows下面为php_apc.dll,需要先加载这个模块,然后是在php.ini里面进行配置: extension=php_apc.dll apc.rfc1867 = on upload_max_filesize = 100M

memcached代码分析详解

memcached分析详解

目录 1.文档目的 (1) 1.1.前言 (1) 2.memcached是什么 (2) 2.1. memcached的特征 (2) 3.memcached适合的场合 (4) 4.memcached的代码分析 (5) 4.1. main流程 (5) 4.2. memcached服务流程(TCP) (6) 4.3. memcached状态转换和通信协议处理 (7) 4.4. memcached核心数据结构 (7) 4.5. Slab Allocation机制:整理内存以便重复使用 (8) 5.memcached的使用优化 (10) 5.1. 命中率 (10) 5.2. 空间利用率 (11) 5.3. 加速比 (12) 5.4. 安全性能 (12) 6.memcached的测试分析 (13) 6.1. 读写memcache指令测试 (13) 6.2. 服务端系统负载 (13) 6.3. 空间分配,命中率 (14) 7.memcached的中间层客户端编写 (16) 8.libevent简介 (17) 9.memcached应用 (18) 10.结束语 (20)

1. 文档目的 1.1. 前言 文档就是简单的把memcached做一个代码走读和分析,起到一个抛砖引玉的作用; 目的就是让大家在使用memcached这个工具时,多一些对工具的了解,从而确定你的程序是否真的需要用memcached来实现不可; 短短2个小时也讲不了多少,主要是做一个学习探讨,如果大家感兴趣的话后期可以再做培训 牛人真多啊,向先行者致敬!

2. memcached是什么 memcached广泛应用在大负载高并发的网站上,是一种非常成熟的产品(称为一项技术也未尝不可)。像facebook,youtube,yahoo,sina,sohu,netease,豆瓣等网站均或多或少使用了该项产品。memcached在以用户为中心的网站上,表现尤其突出,例如sns,blog等web2.0应用的站点。这些站点一般来讲,特别注重用户体验,用户对服务器的响应速度要求很高,用户数据相对比较复杂、关连度比较高,需要经常对数据库进行更新和检索。 许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。 这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。一般使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。 2.1. memcached的特征 1)memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。因此,通过telnet 也能在memcached上保存数据、取得数据。下面是例子。 $ telnet localhost 8119 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. set foo 0 0 3 (保存命令) bar (数据)

memcached完全剖析(1-5)整理

memcached全面剖析 作者:长野雅广(Masahiro Nagano) 作者:前坂徹(Toru Maesaka) 翻译:charlee 整理:yaykey 发表时间:2008/07/02‐2008/07/30 翻译时间:2008/07/10‐2008/07/31 整理时间:2010/11/09

原文链接: http://gihyo.jp/dev/feature/01/memcached/0001 http://gihyo.jp/dev/feature/01/memcached/0002 http://gihyo.jp/dev/feature/01/memcached/0003 http://gihyo.jp/dev/feature/01/memcached/0004 http://gihyo.jp/dev/feature/01/memcached/0005 译文地址: ?第1次:https://www.doczj.com/doc/5c18048439.html,/2008/07/10/memcached‐001/ ?第2次:https://www.doczj.com/doc/5c18048439.html,/2008/07/11/memcached‐002/ ?第3次:https://www.doczj.com/doc/5c18048439.html,/2008/07/16/memcached‐003/ ?第4次:https://www.doczj.com/doc/5c18048439.html,/2008/07/24/memcached‐004/ ?第5次:https://www.doczj.com/doc/5c18048439.html,/2008/07/31/memcached‐005/ 2 / 81

目录 1. memcached完全剖析–1. memcached的基础 (5) 1.1. memcached是什么? (7) 1.2. memcached的特征 (9) 1.2.1. 协议简单 (9) 1.2.2. 基于libevent的事件处理 (9) 1.2.3. 内置内存存储方式 (10) 1.2.4. memcached不互相通信的分布式 (10) 1.3. 安装memcached (11) 1.3.1. memcached的安装 (11) 1.3.2. memcached的启动 (12) 1.4. 用客户端连接 (13) 1.5. 使用Cache::Memcached (15) 1.5.1. 使用Cache::Memcached连接memcached (16) 1.5.2. 保存数据 (17) 1.5.3. 获取数据 (17) 1.5.4. 删除数据 (17) 1.5.5. 增一和减一操作 (18) 1.6. 总结 (19) 2. memcached全面剖析–2.理解memcached的内存存储 (21) 2.1. Slab Allocation机制:整理内存以便重复使用 (23) 2.1.1. Slab Allocation的主要术语 (24) 2.1.1.1. Page (24) 2.1.1.2. Chunk (24) 2.1.1.3. Slab Class (24) 2.2. 在Slab中缓存记录的原理 (25) 2.3. Slab Allocator的缺点 (27) 2.4. 使用Growth Factor进行调优 (29) 2.5. 查看memcached的内部状态 (31) 2.6. 查看slabs的使用状况 (33) 2.7. 内存存储的总结 (35) 3. memcached全面剖析–3.memcached的删除机制和发展方向 (37) 3.1. memcached在数据删除方面有效利用资源 (39) 3.1.1. 数据不会真正从memcached中消失 (39) 3.1.2. Lazy Expiration (39) 3.2. LRU:从缓存中有效删除数据的原理 (41) 3.3. memcached的最新发展方向 (43) 3.3.1. 关于二进制协议 (43) 3.3.2. 二进制协议的格式 (43) 3.3.3. HEADER中引人注目的地方 (45) 3.4. 外部引擎支持 (47) 3 / 81

相关主题
文本预览
相关文档 最新文档