memcached基础-参考详细笔记总结.docx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

memcached/memcache基础

1memcached简介

是一套数据缓存系统或软件,用于在动态系统中缓存数据库数据,减少数据库的访问压力,达到提升网站系统性能的目的。在企业中应用场景中一般用来作为数据库的cache服务使用,memcached是通过预分配指定的内存空间来存取数据的,因此它比数据库直接操作磁盘要快的多,可以提供比直接读取数据库更好的性能。

软件

作用

缓存的数据

Memcached,redis

后端数据库的缓存

动态的数据,如:博文、BBS帖子

Squid,nginx,varnish

前端web应用的缓存

静态数据,如:图片、附件、js、css、html等

2Memcache服务在企业集群架构中应用的角色

1)作为数据库的前端缓存应用。

2)session会话共享的共享存储。

负载均衡的lnmp或lamp的php.ini配置文件中可配置session_save指向配置好的memcached的服务器,这样用户登录的会话信息可以在memcached服务器中共享会话信息。

3Memcached服务在应用中的工作流程

客户端访问web服务,再由web服务的php程序需要访问后端数据库获取数据时,通过设置php程序让客户端优先访问memcached内存缓存,如果缓存中有数据就直接返回前端web服务应用,如果memcached中没有数据,php程序(web服务)会访问后端的mysql数据库服务器,当php程序取得了后端mysql服务器给的数据后,php程序除了返给客户端数据外,还会把数据在memcached的内存中进行缓存,等待下次被访问,从而大大的减轻了数据库的压力,提高整个

2)网站架构的相应速度,提升了用户体验。

3)当程序更新、删除数据库中已有的数据时,会同时发送请求通知memcached已经缓存过的同一个ID内容的旧数据失效,从而保证memcached中的数据和数据库中的数据一致。

4)如果在高并发场合,处理通知memcached过期的缓存失效外,还会通过相关机制,使得在用户访问新数据前,通过程序预先把更新过的数据推送到memcached中缓存起来,这样可以减少数据库的访问压力,提升memcached中缓存的命中率。

4Memcached服务在大型站点中的应用

几乎所有的网站,当访问量增大时,在整个网站集群架构中最先出现瓶颈的一定是数据库角色的服务器及存储角色的服务器,在工作中我们是尽量把用户的请求往前推,即当用户请求数据时,越是在靠近用户的一端把数据返回就越好。

5缓解数据库的高并发访问压力的方案

1)在数据库层配置数据读写分离及读数据库做负载均衡。

2)更有效率的是部署memcached服务作为一个缓存区域,把部分数据库的信息保存在内存中,因为memcached也有单台单点缺陷,所以memcached也有负载均衡的应用场景。

6memcached的删除机制

Memcached在分配空间时,优先使用已经过期的key/value对空间,当分配的内存空间占满时,memcached就会使用LRU算法来分配空间,删除最近最少使用的key/value对,将其空间分配给新的key/value对。在某些情况下,如果不想使用LRU算法,那么可以通过“-M”参数来启动memcached,这样memcached在内存耗尽时,会返回一个报错信息。

7数据库企业案例

现象:数据库负载很高,用upload查看负载,load值20-30,登陆数据库查看:showprocesslist;showfullprocesslist;mysql-uroot-p123-e“showfullprocesslist”|grep-visleep,发现数据库中像LIKE‘%……%’这样的内容很多。

原因:网站的搜索框所致,搜索次数太多,导致数据库负载高。

优化方案思路:

1)从业务上实现用户登陆后再搜索,这样减少搜索次数,从二减轻数据库服务压力。

2)如果有大量频繁的搜索,一般是由爬虫在爬你的网站,分析web的IP封掉。

3)配置主从同步,程序实现读写分离(最后让LIKE这样的语句从从库去查询,减轻压力)

4)LIKE‘%……%’这样的语句在mysql中一般很难优化,可以通过搜索服务Sphinx软件实现搜索。

5)在数据库前面加上memcached缓存服务器。

Memcached说明:Memcached有服务端和客户端之分,memcached是服务端,memcache是客户端。

企业工作场景中如何配置memcached

在工作中,一般都是开发人员提出需求,说要部署一个memcache服务,作为缓存,我们运维接到需求,内存指定多大根据业务有多少数据要缓存来确定。还需要确定业务重要性,进而采取负载均衡,分布

文档评论(0)

shijianqiang + 关注
实名认证
内容提供者

高级 Linux 运维工程师持证人

工作以来一直奋斗在运维的前线,对整个运维流程有比较详细的了解、各类服务的部署维护、常用中间件、数据库、排查故障、监控报警、容器和k8s方面有较强的项目实战经验。

领域认证该用户于2024年03月29日上传了高级 Linux 运维工程师

1亿VIP精品文档

相关文档