深刻分布式缓存 -- 学习总结

什么是缓存

存储在计算机上的一个原始数据复制集,以便于访问。 --维基百科 mysql

缓存是系统快速响应中的一种关键技术,是一组被保存起来以备未来使用的东西,介于应用开发跟系统开发之间。
根据软件系统中所处位置的不一样,缓存大致能够分为三类:web

  • 客户端缓存
  • 服务器缓存
  • 网络中的缓存

根据规模和部署方式缓存也能够分为:算法

  • 单体缓存
  • 缓存集群
  • 分布式缓存

客户端缓存

页面缓存:sql

  • 页面自身的缓存或者离线应用缓存,页面自身对某些元素或所有元素进行缓存,或服务端将静态页面或动态页面的元素进行缓存。
  • 页面缓存是将以前渲染的页面保存为文件,当用户再次访问时能够避开网络链接,从而减小负载,提高性能和用户体验。

浏览器缓存:数据库

  • 根据一套与服务器约定的规则进行工做:检查肯定副本是否最新,一般只要一次会话。
  • 补充------

app缓存浏览器

网络中的缓存

web代理缓存缓存

边缘缓存服务器

服务端缓存

数据库缓存网络

  • 数据库属于IO密集型的应用,主要负责数据的管理及存储。数据库缓存是一类特殊的缓存,是数据库自身的缓存机制。
  • 以mysql为例,mysql中使用了查询缓冲机制,将SELECT语句和查询结果存放在缓冲区中,之后对于一样的SELECT语句,讲直接从缓存区中读取结果,以节省查询时间,提升了sql查询的效率。

平台级缓存app

  • 在系统开发中,适当的使用平台级缓存每每能够取得事半功倍的效果。
  • 在这里指用来写带有缓存特性的应用框架,或者可用于缓存功能的专用库。

应用级缓存

当平台级缓存不能知足系统性能要求时,就要考虑使用应用级缓存了。应用级缓存,须要开发者经过代码来实现缓存机制,这里是nosql的胜场,不管是Redis仍是MongoDB,以及Memcached均可以做为应用级存储的重要技术。

缓存算法:在实现缓存应用的时候,须要了解缓存技术中的几个术语。

  • 缓存命中:请求的数据在缓存中。
  • 没有命中:cache miss,若是缓存中还有存储空间,那么没有命中的对象会被储存到缓存中来。
  • 存储成本:当cache miss,系统会从数据库或者其余数据源取出数据,而后放入存储,这个过程须要时间和空间,这就是缓存成本。
  • 缓存失效:当存储在缓存中的数据须要更新时,就觉得着缓存中的这一数据失效了。
  • 替代策略:当缓存没有命中时,而且缓存容量已经满了,就须要在缓存中去除一条旧数据,而后加入一条新数据,替代的选择就有替代策略决定。

    • Least-Recently-Used(LRU):最近被请求最少的对象
    • Least-Frequently-Used(LFU):访问次数最少的对象
    • SIZE:占用空间最大的对象

相关文章
相关标签/搜索