开发者学堂课程【Java 面试疑难点串讲 4:Java Web 开发:缓存】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/27/detail/596
缓存
内容介绍:
1) 为什么需要有缓存?
2) 进行缓存操作时需考虑的三个方面
为什么需要有缓存?
在项目的开发过程之中,所使用的都是高级语言,进行数据操作时的流程:程序→CPU (处理速度很快)→内存(高性能的读写)→磁盘(如果是普通的机械硬盘,SSD 不做考虑)
所有的性能将浪费在磁盘上,电脑速度会越来越慢,因为所保存的资料一定会被零散的存放在磁盘上,因此在进行寻址的时候就会浪费大量的时间,所以在一些频繁访问的数据上就需要考虑利用缓存来减少磁盘的读写操作,这样就把一些数据直接放在内存中,减少了磁盘操作,也就提升了性能
例如:以一个新闻系统为例,在新闻系统里包含一些热门话题,会有很多人使用,因此就会造成数据库的频繁读取,读取的速度很慢,所以可以将这些数据保存在缓存里面,以避免数据库的读取操作,从而提升效率。
进行缓存操作时需考虑的三个方面
1. 该缓存的数据是否只是需要在页面上进行处理,例如:登录 sina.com ,头部信息会快速显示,而其他信息慢速显示,此时页面缓存可以通过 OSCache 组件实现(但现在基本不考虑);
2. 数据缓存,主要发生在数据层,当取得某些数据之后将这些数据暂时保存在缓存中,从而操作性能,这样的缓存组件常见的是 EHCache(Hibernate、MyBatis、Shiro);
3. 数据库的分布式缓存:Memcached( 不支持数据的持久化)、Redis( 支持持久化)如果要进行集群的设计以及分布式存储基本上都会使用 Redis,如果是单击进行缓存操作往往使用 EHcahce 组件完成。