MemCache缓存加速简介

优化

  • 以更小的资源支持更大负载网站的运行,以小博大。
  • 思路:尽量减少用户等待时间,节省系统资源开销,节省带宽使用。
  • 优化什么地方?有三方面:Memcache内存缓存技术、静态化技术、mysql优化
    在这里插入图片描述

MemCache简介

MemCache的应用场景

由于网站的高并发读写需求,传统的关系型数据库开始出现瓶颈,例如:

  • 1)对数据库的高并发读写:
    关系型数据库本身就是各庞然大物,处理过程非常耗时(如解析SQL语句,时务处理等)。如果对关系型数据库进行高并发读写(每秒上万次的访问),那么它是无法承受的。
  • 2)对海量数据的处理:
    对于大型的SNS网站,每天有上万次的数据产生(如twitter,新浪微博),对于关系型数据库,如果在一个有上亿条数据表中查找某条记录,效率非常低。
  • 使用memcache能很好的解决以上问题
    在实际使用中,通常把数据库查询的结果保存在memcache中,下次访问的时候直接在memcache中直接调用,而不再数据库进行查询操作,这样就在很大程度上减少了数据库的负担。
    保存在memcache中的对象实际放置在内存中,这也是memcache如此高效的原因。
MemCache定义
  • Memcache是一个自由,源码开放,高性能,分布式的分布式内存对象缓存系统,用于动态web应用来减轻数据库的负载,它通过在内存中缓存数据的对象来减少读取数据库的次数,从而提高了网站的访问速度。
  • MemCache是一个存储键值对的HashMap,在内存中对任意的数据所使用的key-value存储,数据可以来自数据库调用,API调用,或者页面渲染的结果。
  • MemCache的理念就是小而强大,它简单的设计促进了快速部署,易于开发并解决面对的大规模的数据缓存的许多难题,而所开放的API使得Memcache能用于java,C/C++/C#,Perl,Python,Ruby等大部分流行的程序语言。
  • MemCache会在内存中开辟一块空间,建立一个巨大的hash表,hash表能够用来存出各种格式的数据,包括图像,视频,文件以及数据库检索的结果。
3.MemCache和memcached

MemCache是这个项目的名称,而memached是服务器端的主程序名称。

MemCache的工作流程

在这里插入图片描述

  • 先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);
  • 每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。
  • Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
  • Memcache是danga的一个项目,最早是LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。
  • Memcached是以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。

注:缓存到MemCached中的数据库数据,在更新数据库时要注意同时更新MemCached

MemCache的工作原理

  • MemCache采用了C/S架构,在server端启动后,以守护程序的方式监听客户端的需求。启动时可以指定监控的IP(服务器的内网ip/外网ip),端口号(所以做分布式测试时,一台服务器上可以启动多个不同端口号的MemCached进程),使用的内存大小等关键参数。一旦启动,服务器就处于可用的状态。
    为了提高性能,Memache缓存的数据全部存储在memcache的内存中,所以重启服务器之后缓存数据会清空,不支持持久化。
MemCache的内存管理

在这里插入图片描述

  • MemCache将内存空间分为ie一组slab。
  • 每个slab下又有若干个page,每个page默认时1M,如果一个slab占用100M内存的话,那么这个salb下面应该有100个page。
  • 每个page里面包含一组chunk,chunk是真正存放数据的地方,同一个slab里面的chunk的大小是固定的。
  • 有相同大小chunk的slab备组织在一起,成为slab_class。
MemCache分布式
  • 为了提升MemCache的存储容量和性能,因此应用的客户端可能会对应多个MemCached服务器来提供服务,这就是MemCached的分布式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值