43 天前 / Silently9527
摘要在上一篇文章 万字长文聊缓存(上)中,我们主要如何围绕着 Http 做缓存优化,在后端服务器的应用层同样有很多地方可以做缓存,提高服务的效率;本篇我们就来继续聊聊应用级的缓存。 缓存的命中率缓存的命中率是指从缓存中获取到数据的次数和总读取次数的比率,命中率越高证明缓存的效果越好。这是一个很重要的指标,应该通过监控这个指标来判断我们的缓存是否设置的合理。 缓存的回收策略基于时间存活期:在设置缓存的同时设置该缓存可以存活多久,不论在存活期内被访问了多少次...
51 天前 / 张昊
精彩文章免费看立即下载系统性能提升之缓存耗子 2015 简书作者 0.2922021-02-24 16:28 打开 App 缓存是解决互联网大流量常用的性能提升方式之一,也是最常被问到的问题。缓存又多种多样,像 Java 的内存缓存就有 Guava Cache、Ehcache、Caffeine 等等;像远程存储缓存(需要独立部署)常用的有 Memcached、Redis 等等。 已知缓存可以提升系统性能,那么适合什么场景? 商品详情页购物车优惠券促销活动等等。
56 天前 / 豌豆花下猫
《软件架构》缓存技术本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《软件架构》中关于缓存技术的内容,虽然是 2014 年的文章,但是从软件架构层面上,并不过时。 缓存缓存是一种加速数据查找(数据读取)的技术,直接读取本地缓存的数据,而不是从数据源读取数据,数据源包括数据库、其他远程系统。 缓存是比源数据更靠近使用方的一块存储空间,可以更快的读取操作。缓存的存储介质一般是内存或磁盘,很多时候会选择内存作为缓存介质,但是内存缓存会在系统重启时丢失数据。 在软件系统中,数据缓存存在多层缓存级别或多层缓存系统。
57 天前 / 豌豆花下猫
《软件架构》缓存技术本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《软件架构》中关于缓存技术的内容,虽然是 2014 年的文章,但是从软件架构层面上,并不过时。 缓存缓存是一种加速数据查找(数据读取)的技术,直接读取本地缓存的数据,而不是从数据源读取数据,数据源包括数据库、其他远程系统。 缓存是比源数据更靠近使用方的一块存储空间,可以更快的读取操作。缓存的存储介质一般是内存或磁盘,很多时候会选择内存作为缓存介质,但是内存缓存会在系统重启时丢失数据。 在软件系统中,数据缓存存在多层缓存级别或多层缓存系统。
73 天前 / kevinwan
这个策略就是我们使用缓存最常见的策略:Cache Aside。这个策略数据以数据库中的数据为准,缓存中的数据是按需加载的,分为读策略和写策略。 但是可见的问题也就出现了:频繁的读写操作会导致 Cache 反复地替换,缓存命中率降低。当然如果在业务中对命中率有监控报警时,可以考虑以下方案: 更新数据时同时更新缓存,但是在更新缓存前加一个 分布式锁。这样同一时间只有一个线程操作缓存,解决了并发问题。同时在后续读请求中时读到最新的缓存,解决了不一致的问题。更新数据时同时更新缓存,但是给缓存一个较短的 TTL。
78 天前 / 猿天地
聊聊小背景 前几天的早晨我早写字楼门口干等了半小时,背后的原因竟然是健康码的二维码刷不出来,保安小哥还一直跟我讲,支付宝出不来你用微信啊,用微信啊。 他们用的相同的接口,我用微信有卵用啊,冷风中我甩了甩仅有的几根秀发,扬长而去...... 作为程序员的我就开始了内心的吐槽大会:这咋做的啊,不行呀,这就打不开了,肯定没做优化,肯定没用缓存,肯定没做压力测试...... 下面作为技术的视角来分析下这个场景的实现,以及可以怎么去优化。这只是我 YY 哈,真实场景别人是怎么实现的我也不清楚哈。
97 天前 / 狂聊Java
点上面蓝色字体 关注我呀 大家好,我是狂聊君。 今天来聊一聊 Mysql 缓存池原理。 提纲附上,话不多说,直接干货。 前言 面试官:同学,你能说说 Mysql 缓存池吗? 狂聊君:啊,这么难吗,容我组织一下语言。(内心 OS:这 TM 还不简单?我能给你扯半小时!) 面试官:可以,给你一分钟时间想一想吧。 ....一分钟后。... 狂聊君:我准备好了,你可听好,我要开始表演了。 为什么要有缓存池? Mysql 的 innodb 存储引擎是基于磁盘存储的,并且是按照页的方式进行管理的。
102 天前 / 博文视点Broadview
许多大型互联网系统,如电商、社交、新闻等 App 或网站,动辄日活千万甚至上亿,每分钟的峰值流量在数十万以上,架构上如何应对如此高的流量峰值呢? 本文选自《技术人修炼之道:从程序员到百万高管的 72 项技能》一书,快来了解下如何通过“缓存”技术来给系统减压吧! 流量峰值给系统带来的主要危害在于,它会瞬间产生大量对磁盘数据的读取和搜索,通常数据源是数据库或文件系统,当数据访问次数增大时,过多的磁盘读取可能会最终成为整个系统的性能瓶颈,甚至压垮整个数据库,导致系统卡死、服务不可用等严重后果。
135 天前 / 程序之心
Redis 在互联网应用中被广泛使用,一般用来做缓存。使用缓存能够提升系统性能,优化用户体验。但缓存也存在雪崩、穿透、击穿等异常情况,本文做下简单总结。 缓存应用场景 缓存是分布式系统中非常重要的组成部分,比如分布式 session、热点数据,在高并发、大流量情况下能够提升数据访问性能。缓存的基本思想就是我们非常熟悉的空间换时间。当我们查询一条数据时,先去查询缓存,如果有缓存就直接返回,如果没有就去查询数据库,更新缓存,然后返回。 缓存击穿 缓存击穿一般指大量请求查询同一个数据,数据的缓存缺失,请求都打到数据库。
136 天前 / 编程一生
背景 分布式、缓存、异步和多线程被称为互联网开发的四大法宝。今天我总结一下项目开发中常接触的四种缓存实际项目中遇到过的问题。 JVM 堆内缓存 JVM 堆内缓存因为可以避免 memcache、redis 等集中式缓存网络通信故障问题,目前还在项目中广泛使用。堆内缓存需要注意 GC 的问题。假如我们的设计是定时的从远程来拉取数据更新本地缓存。一定要注意两点:第一不要全量拉取覆盖,第二不要把一个大对象整体替换为新对象。 先说全量拉取覆盖。全量拉取会有很大的网络开销,会造成网络流量尖刺。有人说没事,我们带宽很足,内网访问,不怕不怕。
145 天前 / reesunhuang
之前有小伙伴问,caffeine 是什么,它和 redis 什么区别,有哪些作用,那么让我们带着疑问让 Garnett 来告诉你这个来自未来的缓存 -Caffeine! 前言我相信大家都了解缓存,了解 redis,之前有发过几篇 redis 的文章忘记的小伙伴可以点击链接看看! Redis 真的这么快吗? 缓存穿透,雪崩,击穿以及解决方案分析 一。 Caffeine 和 Redis 的区别是什么?相同点:两个都是缓存的方式 不同点:redis 是将数据存储到内存里 caffeine 是将数据存储在本地应用里 caffeine 和 redis 相比,没有了网络 IO 上的消耗 联系: 一般将两者结合起来,形成一二级缓存。
158 天前 / 爱笑的架构师
点击关注"爱笑的架构师" 右上角"设为星标"好文章不错过 事故背景公司最近安排了一波商品抢购活动,由于后台小哥操作失误最终导致活动效果差,被用户和代理商投诉了。经理让我带同事们一起复盘这次线上事故。 什么原因造成的?抢购活动计划是零点准时开始, 22:00 运营人员通过后台将商品上线 23:00 后台小哥已经将商品导入缓存中,提前预热 抢购开始的瞬间流量非常大,按计划是通过 Redis 承担大部分用户查询请求,避免请求全部落在数据库上。
158 天前 / Android_开发者
写文章深入探索 Android Gradle 插件的缓存配置谷歌开发者已认证的官方帐号 2 人赞同了该文章什么是配置缓存? 配置缓存是一个提升 IDE 和命令行构建速度的基础构建块。这是 Gradle 6.6 版本提供的一个高度实验性功能,它可以使构建系统记录一次任务的图谱信息,并在接下来的构建中进行复用,从而避免再一次配置整个工程。这一功能也是配置阶段改进的延续,这些改进中引入了 惰性配置 (lazy configuration),以避免在构建的配置阶段进行不必要的工作。这些改进对于快速迭代开发的重要性不言自明,而后者也是 Android Studio 团队所持续关注的一个用例。
172 天前 / reesunhuang
前言直接上,不多 BB 了。 正文 CPU Cache 的数据写入 随着时间的推移,CPU 和内存的访问性能相差越来越大,于是就在 CPU 内部嵌入了 CPU Cache(高速缓存),CPU Cache 离 CPU 核心相当近,因此它的访问速度是很快的,于是它充当了 CPU 与内存之间的缓存角色。 CPU Cache 通常分为三级缓存:L1 Cache、L2 Cache、L3 Cache,级别越低的离 CPU 核心越近,访问速度也快,但是存储容量相对就会越小。其中,在多核心的 CPU 里,每个核心都有各自的 L1/L2 Cache,而 L3 Cache 是所有核心共享使用的。