资讯专栏INFORMATION COLUMN

使用缓存合理性

springDevBird / 1871人阅读

摘要:使用缓存的时机热点数据对于冷数据而言,读取频率低,大部分数据可能还没有再次访问到就已经被挤出内存,不仅占用内存,而且价值不大。缓存可用性缓存是提高数据读取性能的,缓存数据丢失和缓存不可用不会影响应用程序的处理。

使用缓存的时机

热点数据
对于冷数据而言,读取频率低,大部分数据可能还没有再次访问到就已经被挤出内存,不仅占用内存,而且价值不大。
对于热点数据,读取频率高。如果不做缓存,给数据库造成很大的压力,可能被击穿。
修改频率
数据更新前至少读取两次,缓存才有意义。这个是最基本的策略,如果缓存还没有起作用就失效了,那就没有太大价值了。(读取频率>修改频率)

如果这个读取接口对数据库的压力很大,但是又是热点数据,这个时候就需要考虑通过缓存手段,减少数据库的压力,比如我们的某助手产品的,点赞数,收藏数,分享数等是非常典型的热点数据,但是又不断变化,此时就需要将数据同步保存到Redis缓存,减少数据库压力
缓存更新机制
一般情况下,我们采取缓存双淘汰机制,在更新数据库的时候淘汰缓存。此外,设定超时时间,例如30分钟。极限场景下,即使有脏数据入cache,这个脏数据也最多存在三十分钟。

在高并发的情况下,设计上最好避免查询Mysql,所以在更新数据库的时候更新缓存。
缓存可用性
缓存是提高数据读取性能的,缓存数据丢失和缓存不可用不会影响应用程序的处理。因此,一般的操作手段是,如果Redis出现异常,我们手动捕获这个异常,记录日志,并且去数据库查询数据返回给用户。
服务降级
服务降级的目的,是为了防止Redis服务故障,导致数据库跟着一起发生雪崩问题。因此,对于不重要的缓存数据,可以采取服务降级策略,例如一个比较常见的做法就是,Redis出现问题,不去数据库查询,而是直接返回默认值给用户。
对于可用性、服务降级实际情况

在大公司,redis都是codis集群,一般整个codis是不会挂掉的。所以在程序代码上没去实现可用性、服务降级。(不知我说的对不对,大家参考就好)

缓存预热

在新启动的缓存系统中,如果没有任何数据,在重建缓存数据过程中,系统的性能和数据库复制都不太好,那么最好的缓存系统启动时就把热点数据加载好,例如对于缓存信息,在启动缓存加载数据库中全部数据进行预热。一般情况下,我们会开通一个同步数据的接口,进行缓存预热。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/61851.html

相关文章

  • 合理利用浏览器缓存

    摘要:当我们第一次或者打开百度,我们会发现加载的请求响应字段如下由于是第一次或者强制刷新打开的,所以浏览器会忽略缓存,直接向服务器发送请求加载资源,图中画框的那几个字段是与缓存相关的。 合理利用缓存概述:本章主要讨论了两方面的内容。1. 浏览器缓存机制。 2. web实践中如何有效利用这些缓存浏览器缓存机制 作为web开发人员经常遇到的问题之一就是我明明修复并且部署了这个BUG为什么线上有的...

    whatsns 评论0 收藏0
  • 合理利用浏览器缓存

    摘要:当我们第一次或者打开百度,我们会发现加载的请求响应字段如下由于是第一次或者强制刷新打开的,所以浏览器会忽略缓存,直接向服务器发送请求加载资源,图中画框的那几个字段是与缓存相关的。 合理利用缓存概述:本章主要讨论了两方面的内容。1. 浏览器缓存机制。 2. web实践中如何有效利用这些缓存浏览器缓存机制 作为web开发人员经常遇到的问题之一就是我明明修复并且部署了这个BUG为什么线上有的...

    zhichangterry 评论0 收藏0
  • web前端开发编码规范及性能优化

    摘要:性能优化页面渲染减少页面修改元素多个样式可以通过修改完成这样可以把多次减少为一次修改元素多个样式可以分为三步先隐藏再修改最后显示。 代码优化 这个部分仅仅将代码优化本身,不考虑性能,关于代码部分的性能优化在 页面渲染 部分 代码优化 中 HTML+CSS 符合 XHTML 规范: 小写,正确嵌套,必须关闭; 双引号,合理缩进,utf-8编码; 标签语义化,便于维护; 合理注释,比如 ...

    zhaofeihao 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<