机器人是如何抗击新冠肺炎疫情的?
1. 前言:为什么要用缓存? 用户数增长,架构演变,数据量增大,开始考虑怎么去做性能优化。 而性能优化的第一定律就是:优先考虑使用缓存。 2. 缓存的基本原理 2.1 缓存的作用 1、加快数据访问速度; 2、减轻后端应用和数据存储的负载压力。 2.2 缓存的特征 1、命中率:命中率 = 命中数 / 请求数。 这是衡量缓存有效性的重要指标。命中率越高,表明缓存的使用率越高。 2、最大元素(最大空间)。 一旦缓存中元素数量超过这个值(或者缓存数据空间超过其最大支 持空间),将会触发淘汰策略。 3、淘汰策略。 这个我前文其实已经说过。 FIFO(First In First Out) 先进先出,淘汰最早数据。 判断存储时间,离目前最远的数据优先淘汰。 LRU (Least Recently Used)剔除最近最少使用。 判断最近使用时间,离目前最远的数据优先淘汰。 LFU (Least Frequently Used)剔除最近使用频率最低的数据。 在一段时间内,数据被使用次数最少的,优先淘汰。 具体可以看这篇文章常见的缓存剔除策略 & LRU与LFU的区别。 3. 缓存的分类 缓存的主要手段有:浏览器缓存、CDN、反向代理、本地缓存、分布式缓存、数据库缓存。 在解读《大型网站技术架构》一文中,其实已经说到过。 我们一般说做性能优化时是指后三个:本地缓存、分布式缓存、数据库缓存。 前面三个缓存策略属于网站前端的范畴。 从硬件介质上来看,缓存分为内存和硬盘两种。 但从技术上,又可以分成内存、硬盘文件、数据库。 我们通常意义上说的缓存一般都是基于内存的。 因为只有内存,才足够快。 数据库缓存一般也是基于内存的,但这个活一般是DBA在配置数据库的时候就设置好了。 对于大部分开发人员来说,我们一般所说的缓存优化都是基于本地缓存(ocal cache)和远程缓存(remote cache)。 而现在远程缓存这个词一般也被分布式缓存这个常用方案所代指。 4. 什么时候使用缓存? 4.1 缓存的使用判断 什么时候使用缓存的判断其实比较简单,抓住两点就行了: 1、是不是热点数据? 所谓热点,一般是遵循二八定律,即百分之八十的访问集中在百分之二十的数据上。 2、是不是读比写多? 这个比例一般为2:1。 4.2 什么时候不应该使用缓存? 反过来就是了。 1、没有热点数据不要使用缓存,也没什么意义。 因为内存资源是比较宝贵的。 2、频繁修改的数据不要使用缓存。 因为可能写入后还来不及读取就已失效或被淘汰,并且容易产生脏读。 4.3 合理使用缓存 最后,最重要的是确认是否需要使用缓存? 确定了后,再选择合适的缓存工具及使用缓存的方式。 5. 缓存时常见的一些问题 使用缓存优点很多,但也存在一些很常见的问题。双刃之剑,就看怎么用了。
列举一些我们工作中常见的一些缓存问题,并给出至少一种解决方案。 (编辑:南通站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |