本教程操作环境:windows7系统、java10版,DELL G3电脑。
1.概念
缓存是实际工作中非常常用的一种提高性能的方法。而在java中,所谓缓存,就是将程序或系统经常要调用的对象存在内存中,再次调用时可以快速从内存中获取对象,不必再去创建新的重复的实例。
2.使用原因
作为一般系统架构来说,无非只是MVC的垂直型架构亦或者是分布式SOA架构,换句话说业务层一般都是服务层——持久化层——数据层,真正在实用中80%的访问对应着大概20%-30%的数据,当某一部分数据访问比例超过一半时,我们就要考虑将这一部分数据进行缓存,即将这部分数据变成热数据。尤其是高并发系统,当不设立缓存数据时,所有的请求将全部下沉到数据层即全部在关系型数据库中读取,所有的关系型数据库的读取都会涉及到磁盘IO操作,当IO读取阻塞时,数据库连接池将被使用殆尽,从而造成客户体验度下降。
3.两种模式
内存缓存:缓存数据存放在服务器的内存空间中。
优点:速度快。 缺点:资源有限。
文件缓存:缓存数据存放在服务器的硬盘空间中。
优点:容量大。 缺点:速度偏慢,尤其在缓存数量巨大时。
4.缓存方法
(1)jvm内置缓存
用static hashMap基于内存缓存的jvm内置缓存,简单不实用,保对象的有效性和周期无法控制,容易造成内存急剧上升。常用的有Oscache(主要针对jsp页面),Ehcache(主要针对数据库访问层),Jcache,Jbosscache等等很多;
(2)Redis
关系型数据库:持久、主外键、编写SQL语句、存放在硬盘。
非关系型数据库:一般用于缓存、值存放在内存(所以效率是真的高)、key-vakye形式、容易数据丢失(不过很好解决)、有点小类似jvm内置缓存(不过这个更牛嗨,因为可以多个服务器间共享数据)。
原文来自:https://www.py.cn
暂无评论内容