MemCache——第一次亲密接触

前言


      因为最近接触ITOO的项目,接触到很多原来没有接触过的新知识,今天就先来聊聊MemCache,在这里要谢谢马世超师哥,给我讲了很多这方面的知识。现在就来总结一下memcache的相关知识。



MemCache是什么?


        MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的数据缓存的许多难题,而所开放的API使得MemCache能用于Java、C/C++/C#、Perl、Python、PHP、Ruby等大部分流行的程序语言。


自己的理解:memcache就是一个高性能的分布式的内存对象缓存系统,把数据库中查找到的数据放到内存中,而数据的形式是一张巨大的hash表,他可以存储各种格式的数据,包括图像、视频、文件等,这让我想到了原来学过的非关系型数据库,他也可以理解成是一种非关系型数据库,我们学过操作系统知道,缓存的机制就是把数据存储在内存中,从而减少对磁盘的访问,没有了I/O操作,我们的效率就会被大大的提高



工作流程




1.检查客户端的请求数据是否在memcache客户端中,如果有,直接把请求数据返回,不再对数据库进行任何操作,路径:1-2-3-7

2.如何memcach客户端中不存在,则去查数据库,把从数据库获取的数据返回给客户端,同时把数据缓存一份到memcach服务器中(memcach客户端不负责,需要写到程序中),路径:1-2-4-5-7-6

3.每次更新数据库的同时更新memchach中的数据,保证一致性

4.当分配给memcach内存空间用完之后,会使用LRU(Least Recently Used ,最近最少使用)策略加上到期实测策略,失效数据首先被替换,然后在替换掉最近未使用的数据。



特性和限制


1. MemCache中可以保存的item数据量是没有限制的,只要内存足够

2.hash表中是以键值对的形式存储的,他的key最大为250字节,超过这个长度将无法存储

3.单个item最大的数据是1MB,超过1MB的数据不予存储

4.MemCache服务端是不安全的

5.不能遍历MemCache所有的item,因为这个操作的速度相对缓慢且会阻塞其他操作

6.MemCache的高性能源自于两阶段哈希结构:第一阶段在客户端,通过哈希算法根据KEY值算出一个节点;第二阶段在服务端,通过一个内部的哈希算法,查找真正的item并返回客户端。


总结:下一篇将总结memcache的分布式实现问题:Memcache如何实现分布式存取?








评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值