Atitit cache缓存之道 attilax 艾提拉总结 1. 使用缓存的目的(使用缓存) 1 1.1. 1、实现目标减少数据库的负担 1 1.2. 加快查询的速度 2 2. 缓存的常见参数 过
Atitit cache缓存之道 attilax 艾提拉总结
1. 使用缓存的目的(使用缓存) 1
1.1. 1、实现目标减少数据库的负担 1
1.2. 加快查询的速度 2
2. 缓存的常见参数 过期时间(秒 2
3. 缓存的实现远离原理 2
4. 缓存标准jcache 2
5. 缓存常见api的实现 2
5.1. Get缓存 2
6. 缓存刷新时间机制 3
7. 缓存层级 系统架构中,不同层级之间为了加快访问速度,缓存都可以存在 3
7.1. Indexdb localstore 3
7.2. Redis 3
7.3. Orm cache 3
7.4. Dbcache 3
8. 四、数据库缓存 4
8.1. 2、缓存策略 a、Query Cache 4
8.2. b、Data Buffer 4
9. 缓存算法FIFO,LRU和LFU三种 4
10. 常见的缓存实施 5
10.1. 优先使用spring cache mybatiscacahe 最小化开发 5
10.2. Guavacache ehcache 工作量稍大,单可靠性高。 5
10.3. 线程池futuretask写缓存 需要调整顺序 5
10.4. Redis 最麻烦写 5
11. 其他 7
11.1. Key的生成算法那 getMethodName+ Param序列化 7
1. 使用缓存的目的(使用缓存)
1.1. 1、实现目标减少数据库的负担
通过redis缓存数据。(目的不是加快查询的速度,而是减少数据库的负担)
1.2. 加快查询的速度
2. 缓存的常见参数 过期时间(秒
1. private int maxSize=DEFAULT_MAXSIZE; //最大數量
2. private int ttl=DEFAULT_TTL; //过期时间(秒)
3. 缓存的实现远离原理
大多数缓存的解决方案是将数据存储在类似map的结构中(key-value),正因为如此,JCache API规范的标准也是基于map(类似)的结构。
本地表格也可
List缓存,条件查询wehere缓存
其实缓存就是把一些外存上的数据保存到内存上而已,怎么保存到内存上呢,我们运行的所有程序,里面的变量值都是放在内存上的,所以说如果要想使一个值放到内存上,实质就是在获得这个变量之后,用一个生存期较长的变量存放你想存放的值,在java中一些缓存一般都是通过map集合来做的。
4. 缓存标准jcache
5. 缓存常见api的实现
5.1. Get缓存
get的时候,可以设置个call,如果不存在则设置。。
使用ex的模式不好,使用返回值也不好。。
6. 缓存刷新时间机制
如果cache支持,直接设置即可。
如果cache不支持可以使用timer主动刷新。。
7. 缓存层级 系统架构中,不同层级之间为了加快访问速度,缓存都可以存在
· 操作系统磁盘缓存->减少磁盘机械操作
· 数据库缓存->减少文件系统I/O
· 应用程序缓存->减少对数据库的查询
· Web服务器缓存->减少应用服务器请求
· 客户端浏览器缓存->减少对网站的访问
7.1. Indexdb localstore
操作系统磁盘缓存->减少磁盘机械操作数据库缓存->减少文件系统I/O应用程序缓存->减少对数据库的查询Web服务器缓存->减少应用服务器请求客户端浏览器缓存->减少对网站的访问
7.2. Redis
7.3. Orm cache
7.4. Dbcache
8. 四、数据库缓存
1、重要性
数据库通常是企业应用系统最核心的部分数据库保存的数据量通常非常庞大数据库查询操作通常很频繁,有时还很复杂以上原因造成数据库查询会引起非常频繁的磁盘I/O读取操作,迫使CPU挂起等待,数据库性能极度低下
8.1. 2、缓存策略 a、Query Cache
以SQL作为key值缓存查询结果集一旦查询涉及的表记录被修改,缓存就会被自动删除设置合适的Query Cache会极大提高数据库性能Query Cache并非越大越好,过大的Qquery Cache会浪费内存MySQL: query_cache_size= 128M
8.2. b、Data Buffer
data buffer是数据库数据在内存中的容器data buffer的命中率直接决定了数据库的性能data buffer越大越好,多多益善MySQL的InnoDB buffer:innodb_buffer_pool_size = 2GMySQL建议buffer pool开大到服务器物理内存60-80%
9. 缓存算法FIFO,LRU和LFU三种
主要分为FIFO,LRU和LFU三种,在技术点中会解释这三种是什么意思。大家一起研究和优化。笔者目前整理的一些blog针对面试都是超高频出现的。大家可以点击链接:http://blog.csdn.net/u012403290
技术点:
1、FIFO(First In First Out):
先入先出,很好理解,就和队列一样,先进队列的先出队列。
2、LRU(Least Recently Used):
最近最少使用,意思就是最近读取的数据放在最前面,最早读取的数据放在最后面,如果这个时候有新的数据进来,那么最后面存储的数据淘汰。
3、LFU(Least Frequently Used):
最不常使用,意思就是对存储的数据都会有一个计数引用,然后队列按数据引用次数排序,引用数多的排在最前面,引用数少的排在后面。如果这个时候有新的数据进来,把最后面的数据删除,把新进数据排在最后面,且引用次数为1
10. 常见的缓存实施
10.1. 优先使用spring cache mybatiscacahe 最小化开发
10.2. Guavacache ehcache 工作量稍大,单可靠性高。
10.3. 线程池futuretask写缓存 需要调整顺序
10.4. Redis 最麻烦写
五、应用程序缓存
1、对象缓存
由O/R Mapping框架例如Hibernate提供,透明性访问,细颗粒度缓存数据库查询结果,无需业务代码显式编程,是最省事的缓存策略当软件结构按照O/R Mapping框架的要求进行针对性设计,使用对象缓存将会极大降低Web系统对于数据库的访问请求良好的设计数据库结构和利用对象缓存,能够提供极高的性能,对象缓存适合OLTP(联机事务处理)应用
2、查询缓存
对数据库查询结果集进行缓存,类似数据库的Query Cache适用于一些耗时,但是时效性要求比较低的场景。查询缓存和对象缓存适用的场景不一样,是互为补充的当查询结果集涉及的表记录被修改以后,需要注意清理缓存
3、页面缓存
a、作用
针对页面的缓存技术不但可以减轻数据库服务器压力,还可以减轻应用服务器压力好的页面缓存可以极大提高页面渲染速度页面缓存的难点在于如何清理过期的缓存
b、分类
I、动态页面静态化
利用模板技术将访问过一次的动态页面生成静态html,同时修改页面链接,下一次请求直接访问静态链接页面动态页面静态化技术的广泛应用于互联网CMS/新闻类Web应用,但也有BBS应用使用该技术,例如Discuz!无法进行权限验证,无法显示个性化信息可以使用AJAX请求弥补动态页面静态化的某些缺点
II、Servlet缓存
针对URL访问返回的页面结果进行缓存,适用于粗粒度的页面缓存,例如新闻发布可以进行权限的检查OScache提供了简单的Servlet缓存(通过web.xml中的配置)也可以自己编程实现Servlet缓存
III、页面内部缓存
针对动态页面的局部片断内容进行缓存,适用于一些个性化但不经常更新的页面(例如博客)OSCache提供了简单的页面缓存可以自行扩展JSP Tag实现页面局部缓存
六、web服务器端缓存
基于代理服务器模式的Web服务器端缓存,如squid/nginxWeb服务器缓存技术被用来实现CDN(内容分发网络 content delivery network)被国内主流门户网站大量采用不需要编程,但仅限于新闻发布类网站,页面实时性要求不高
七、基于ajax的浏览器缓存
使用AJAX调用的时候,将数据库在浏览器端缓存只要不离开当前页面,不刷新当前页面,就可以直接读取缓存数据只适用于使用AJAX技术的页面
11. 其他
11.1. Key的生成算法那 getMethodName+ Param序列化
//在Service层写注解 @Cacheable(value = "myCache", key = "getMethodName()")
getMethodName+ Param序列化
干货_java缓存技术详解.html
Atitit cache缓存之道 attilax 艾提拉总结 1. 使用缓存的目的(使用缓存) 1 1.1. 1、实现目标减少数据库的负担 1 1.2. 加快查询的速度 2 2. 缓存的常见参数 过相关推荐
- Atitit 关于艾提拉个人简绍 中文日文英文对照版
Atitit 关于艾提拉个人简绍 日文版 经历了很多项目实践,具备较为宽广的IT从业与信息化工作背景,具备若干创业历程,道路曲折,初心不改.在相关领域累计了较深的深度(细化度)与高度(抽象度)与广度 ...
- Atitit mis 管理信息系统概论 艾提拉著 目录 1. 互联网三大定律 2 1.1. 摩尔定律和 2 1.2. 吉尔德定律 电脑及网络宽带资源成为重要免费资源 2 1.3. 梅特卡夫定律 用户
Atitit mis 管理信息系统概论 艾提拉著 目录 1. 互联网三大定律 2 1.1. 摩尔定律和 2 1.2. 吉尔德定律 电脑及网络宽带资源成为重要免费资源 2 1.3. 梅特卡夫定律 用户越 ...
- 艾提拉近年来技术大总结
##基本信息 姓名:艾提拉 民族:汉 生日:1984.3 email:1466519819@qq.com 英文名&网名id : attilax 曾用名:艾龙 ##主要方向与目标: 技术 ...
- 大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 21
大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 211 第 ...
- Atitit 五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I
Atitit 五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I 1.1. .3 进程的阻塞1 1.2. 网络 ...
- Atitit xml框架类库选型 attilax总结
Atitit xml框架类库选型 attilax总结 1. 1. XML类库可以分成2大类.标准的.这些类库通常接口和实现都是分开的1 2. Jdom 和dom4j1 2.1. 5.1. jdom1 ...
- 加快modelsim仿真速度的方法(原创)
①仿真精度越高,仿真效率月底. 仿真时采用`timescale 1ns/1ns比采用1ns/100ps的仿真效率高 simulation was two billion ns. ②clock gene ...
- nginx 没有cookie_Nginx 内容缓存及常见参数配置
使用场景:项目的页面需要加载很多数据,也不是经常变化的,不涉及个性化定制,为每次请求去动态生成数据,性能比不上根据请求路由和参数缓存一下结果,使用 Nginx 缓存将大幅度提升请求速度. 基础 只需要 ...
- Atitit 算法之道 attilax著 1. 编码算法 3 1.1. Base64 htmlencode urlencode 3 2. Ui方面的算法 3 2.1. 软键盘算法 计算软键盘上下
Atitit 算法之道 attilax著 1. 编码算法 3 1.1. Base64 htmlencode urlencode 3 2. Ui方面的算法 3 2.1. 软键盘算法 计算软键盘上下左 ...
- Atiitt 可视化 报表 图表之道 attilax著 Atiitt 可视化的艺术 attilax著 v2 s51.docx Atitit.可视化与报表原理与概论 1. 、什么是可视化(这一
Atiitt 可视化 报表 图表之道 attilax著 Atiitt 可视化的艺术 attilax著 v2 s51.docx Atitit.可视化与报表原理与概论 1. .什么是可视化(这一节有点 ...
最新文章
- fastjson获取json方法
- java进销存系统静态页_java 库存 进销存 商户 多用户管理系统 SSM springmvc 项目源码...
- 为什么航空发动机那么难造?看看3D工作原理
- 计算几何常用算法的理论基础【转】
- Python基础入门:endswith() 函数
- python基础系列教程——python所有包库的下载
- webcrypto库下载_使用WebCrypto API的电子签名
- Windows Socket 编程_ 简单的服务器/客户端程序
- 力扣498. 对角线遍历
- vb中空操作(等待)的指令、延时方法
- 淘宝中间件借阿里云对外 日均调千亿次
- EMERSON模块A6500-UM、SLS1508、MVME7100-0171、MVME61006E-0163、A6370D、SE3008、CE3008、MVME6100、VE3006,CE3008
- java坦克大战图片素材包,坦克大战素材包
- 密封槽设计标准_密封槽设计标准
- 图片底色去除vue+canvas(简易版)
- python求和1到100_python求1到100的和的几种方法
- [PS教程]怎么用PS将图片印章的背景变透明
- Mysql之笛卡尔积
- 顽石互动创始人吴刚:走高品质的发展道路
- 2015_BOE_Chiu2 杜克大学oct数据集
热门文章
- idea oracle 生成实体类,IDEA中maven加入mybatis自动生成代码(ORACLE)
- android实现横向选择器,安卓开发 简单实现自定义横向滚动选择View : HorizontalselectedView...
- axure源文件_Axure函数应用:指示线跟随地图所选区域,并展示相应数据可视化...
- 25.212---复用和信道编码
- Yii2给数据库表添加字段后对应模型无法识别到该属性的原因和解决办法
- pre保持原格式但文本不超出的解决方案
- Windows下配置安装Git(一)
- 微信JS SDK网页接口
- wubi安裝ubuntukylin 14.04过程以及基本配置
- 【进阶修炼】——改善C#程序质量(4)