For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
缓存功能的应用在许多软件开发项目中都一直占有很重要的地位,而本文我们就通过案例分析来了解一下,软件开发缓存架构常用设计方案分享。
1:缓存技术和框架的重要性
互联网的一些高并发,高性能的项目和系统中,缓存技术是起着功不可没的作用。缓存不仅仅是key-value的简单存取,它在具体的业务场景中,还是很复杂的,需要很强的架构设计能力。
2:缓存的技术方案分类
1)是做实时性比较高的那块数据,比如说库存,销量之类的这种数据,我们采取的实时的缓存+数据库双写的技术方案,双写一致性保障的方案。
2)是做实时性要求不高的数据,比如说商品的基本信息,等等,我们采取的是三级缓存架构的技术方案,就是说由一个专门的数据生产的服务,去获取整个商品详情页需要的各种数据,经过处理后,将数据放入各级缓存中。
3:高并发以及高可用的复杂系统中的缓存架构都有哪些东西
1)在大型的缓存架构中,redis是基础的一层。高并发,缓存架构中除了redis,还有其他的组成部分,但是redis至关重要。
2)的缓存+数据库读写的模式,cacheasidepattern。读的时候,先读缓存,缓存没有的话,那么就读数据库。更新缓存分以下两种方式:
数据发生变化时,先更新缓存,然后再更新数据库。这种适用于缓存的值相对简单,和数据库的值一一对应,这样更新比较快。
数据发生变化时,先删除缓存,然后再更新数据库,读数据的时候再设置缓存。这种适用于缓存的值比较复杂的场景。
3)数据库与缓存双写不一致问题的解决方案
问题:并发请求的时候,数据发生了变更,先删除了缓存,然后要去修改数据库,此时还没修改。另一个请求过来,去读缓存,发现缓存空了,去查询数据库,查到了修改前的旧数据,放到了缓存中。
方案:数据库与缓存更新与读取操作进行异步串行化。
4)大型缓存全量更新问题的解决方案
问题:缓存数据很大时,可能导致redis的吞吐量就会急剧下降,网络耗费的资源大。如果不维度化,就导致多个维度的数据混合在一个缓存value中。而且不同维度的数据,可能更新的频率都大不一样。
方案:缓存维度化。举个例子:商品详情页分三个维度:商品维度,商品分类维度,商品店铺维度。将每个维度的数据都存一份,比如说商品维度的数据存一份,商品分类的数据存一份,商品店铺的数据存一份。那么在不同的维度数据更新的时候,只要去更新对应的维度就可以了。大大减轻了redis的压力。
5)通过多级缓存,达到高并发极致,同时给缓存架构后的安全保护层。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。