Memcache 缓存机制以及分布式
Memcache 缓存机制
Memcached是一个高性能的分布式内存对象缓存系统。
目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力,通过在内在里维护一个统一的巨大的的hash表,
它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等,
简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
传统的查询方法是直接查询数据库,数据库将结果返回给查询语句,
而当有Memcache中间缓存层时,查询的是Memcache缓存数据,下面详细了解Memcache各类数据操作原理:
- 查询数据(select),首先通过指定的Key查询(get)Memcache中间缓存层数据,如果存在相对应数据,则直接获取出数据结果,查询过程完全不需要查询数据库。如果不存在,则查询MySQL数据库,并以key对应value的形式将查询结果存储在Memcache缓存数据中,然后将结果返回给查询语句。
- 更新数据(update),首先更新数据,然后删除相关的memcache数据(delete)。
- 增加数据(add),首先删除相关缓存数据,然后增加数据。
- 删除数据(delete),删除数据,并删除Memcache数据。
memcache的应用场景
- 如果是一个小网站,pv值不大,就不考虑使用memcached
- 变化频繁,查询频繁,但是不一定写入数据库(适合memcached)(用户在线状态)
- 变化频繁,一变化就要入库(比如股票,金融)不适合memcached
- 变化不频繁,查询频繁,不管入不入库,都比较适合memcache,(新浪的新闻频道)
分布式是指将不同的业务分布在不同的地方(几台服务器)。 而集群指的是将几台服务器集中在一起,实现同一业务。
分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。
举例:
就比如新浪网,访问的人多了,他可以做一个集群,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就交给哪一台去完成。
而分布式,从窄意上理解,也跟集群差不多, 但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。memcache的分布式算法取决于客户端,主要用取余算法和一致性哈希算法。