课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
缓存功能的应用在高并发编程开发场景中使用频率还是非常高的,而今天我们就通过案例分析来了解一下,缓存功能应用以及常见问题分析。
一、缓存的应用场景
缓存适用于高并发的场景,提升服务容量。主要是将从经常被访问的数据或者查询成本较高从慢的介质中存到比较快的介质中,比如从硬盘—>内存。我们知道大多数关系数据库是基于硬盘读写的,其效率和资源有限,而redis是基于内存的,其读写速度差别差别很大。当并发过高关系数据库性能达到瓶颈时候,就可以策略性将常访问数据放到Redis提高系统吞吐和并发量。
对于常用网站和场景,关系数据库主要可能慢在两个地方:
读写IO性能较差
一个数据可能通过较大量计算得到
所以使用缓存能够减少磁盘IO次数和关系数据库的计算次数。读取上速度快也从两个方面体现:
基于内存,读写较快
使用哈希算法直接定位结果不需要计算
二、需要注意的问题
缓存使用不当会带来很多问题。所以需要对一些细节进行认真考量和设计。当然难得数据一致性在下面单独分析。
是否用缓存
项目不能为了用缓存而用缓存,缓存并一定适合所有场景,如果对数据一致性要求极高,又或者数据频繁更改而查询并不多,又或者根本没并发量的、查询简单的不一定需要缓存,还可能浪费资源使得项目变得臃肿难维护,并且使用redis缓存多多少少可能会遇到数据一致性问题需要考虑。
缓存合理设计
在设计缓存的时候,很可能会遇到多表查询,如果遇到多表查询缓存的键值对就需要合理考虑,是拆分还是合在一起?当然如果组合种类多但常出现的不多也可以直接缓存,具体的设计要根据项目业务需求来看,并没有一个非常绝对的标准。
过期策略选择
缓存装的是相对热点和常用的数据,Redis资源也是有限,需要选择一个合理的策略让缓存过期删除。我们学过操作系统也知道在计算机的缓存实现中有先进先出的算法(FIFO);少使用算法(LRU);淘汰算法(OPT);访问页面算法(LFR)等磁盘调度算法。设计Redis缓存时候也可以借鉴。根据时间来的FIFO是好实现的。且Redis在全局key支持过期策略。
并且过期时间也要根据系统情况合理设置,如果硬件好点当前可以稍微久一点,但是过期时间过久或者过短可能都不太好,过短可能缓存命中率不高,而过久很可能造成很多冷门数据存储在Redis中不释放。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。