👆点击“博文视点Broadview”,获取更多书讯
缓存是为了减少数据库和服务器压力而产生的,在应用层编程时需主要考虑以下几种情况:
客户端缓存负责减轻服务端的存储和频繁的数据请求等压力。
例如,在QQ初始阶段,只有“会员”才可以把QQ表情存储在“云端”之上,因为腾讯内部并没有庞大的存储系统存储大量的QQ表情。
虽然现在腾讯已经取消了只有“会员”才可以存储QQ表情的限制,但是大部分QQ表情仍然默认存储在本地客户端。
客户端缓存大致可分为以下几种:
服务端缓存主要是为了减少数据库压力和外部服务接口的压力,这也是实际编程中最常用的手段。
除减少数据库的压力外,缓存返回数据的响应速度比数据库要快。另外,尽可能不调用外部接口,因为外部接口无论WebSocket、WebService,还是HTTP,其响应速度都是不可控的。如果外部接口响应时间过长,也会影响自身性能。
服务端缓存大致分为以下几种:
01
缓存的命中率
02
缓存回收方式
03
缓存回收策略
04
缓存的设计模式
(2)Read/Write through模式:在读取时先到缓存中查询数据是否存在。如果存在,则直接返回。如果不存在,则由缓存组件负责从数据库中同步加载数据,此数据永不过期。在写入时,先查询要写入的数据在缓存中是否存在。如果存在。则更新缓存中的数据,并且由缓存组件把数据同步更新到数据库中。Read/Write through模式初步屏蔽了底层数据库操作,但是当把数据从缓存组件写入DB时,有可能出现异常无法正确写入的情况。因而需要谨慎记录时间戳,以便跟踪维护处理数据。该方案适合对持久性要求较低的业务场景。
(3)Write Behind Caching(Write Back)模式:Write Behind Caching模式属于Read/Write through模式的进阶版,完全不考虑DB,增删改查全部通过缓存进行处理。如果读取不到数据,则直接认为该数据不存在,服务器会定期把缓存中的数据存储到DB中。一般高并发应用程序最常用的是Write Behind Caching设计模式,它是性能最好的设计模式,但是实现较为复杂,一旦服务器宕机则有可能导致大量数据丢失。
05
缓存测试应涵盖的内容
(2)缓存是否设置了最大位数及时间等功能,是否会出现内存溢出的现象。
(3)缓存能够节省各数据源多少比重的读取,例如进程内缓存节省了多少读取Redis的比重,Redis缓存节省了多少读取磁盘缓存的比重,磁盘缓存节省了多少读取MySQL的比重。
(4)App在无网或弱网环境下,是否可以正常打开及使用。例如网易云音乐在没有网络的情况下可以听一些本地缓存的歌曲。
(5)App在弱网转正常网络之后,缓存是否能被正常覆盖。
(6)各级缓存与数据库是否能够保持数据一致性,是否包含脏读、不可重复读等相关问题。
(7)缓存是否能够被手动删除或刷新,若遇到紧急状况是否能够进行可逆性操作。
(8)缓存的回收策略、回收方式等内容是否正常生效。
▼
本书摘自《高性能Java架构:核心原理与案例实战》一书,欢迎阅读此书了解更多高性能Java架构的内容。
▊《高性能Java架构:核心原理与案例实战》
张方兴 著
本书是按照程序设计与架构的顺序编写的,共13章。
第1章介绍学习高性能Java应了解的核心知识,为前置内容。
第2章和第3章讲解在编写代码之前,如何高效地为MySQL填充亿级数据,并对MySQL进行基准测试,以便在之后编程时有所比较。
第4章讲解在编写代码的过程中如何优化代码,使代码更高效。
第5章和第6章讲解在写好代码之后如何测试并优化场景响应速度。
第7章和第8章讲解在程序上线执行一段时间之后如何对MySQL进行主从复制、分库分表。
第9章讲解如何通过Prometheus和Grafana监控MySQL节点。
第10章和第11章讲解如何通过堆内缓存、堆外缓存(MapDB)和磁盘缓存解决MySQL数据库性能不佳的问题。
第12章讲解如何使用分布式锁Redisson解决实际应用中常见的数据一致性问题。
第13章简要介绍Java中的常见架构与工具。
本书不仅适合Java初学者、刚入行的编程人员,也适合对高性能、高并发感兴趣的程序员。
(京东满100减50,快快扫码抢购吧!)
抽奖赠书
按以下方式与博文菌互动,即有机会获赠《高性能Java架构:核心原理与案例实战》一书!
活动方式:关注下方“博文视点Broadview”公众号,在后台回复“java抽奖”参与活动,届时会在参与的小伙伴中抽取1名幸运鹅!
活动时间:截至9月10日(周五)开奖。
快快拉上你的小伙伴参与进来吧~~
如果喜欢本文欢迎 在看丨留言丨分享至朋友圈 三连
热文推荐
Kubernetes生态系统与演进路线
吃透HTTP原理,建立安全的HTTPS网站
如何在AI工程实践中选择合适的算法?
书单 | 做数字化转型,离不开这10本书!
▼点击阅读原文,查看本书详情~
本文分享自 博文视点Broadview 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!