For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
分布式编程开发随着互联网的不断发展而被越来越多的程序员掌握并应用,而本文我们就通过案例分析来简单了解一下,分布式缓存应用注意事项分析。
在分布式场景下,为应对高流量冲击,减轻数据库压力,我们大都会通过缓存来应对流量冲击,常见的缓存中间件如Redis、Memcache等,缓存也会带来一定的问题,如下:
1.缓存穿透:指缓存中没有数据,数据库中也没有数据。在进行数据的访问时,通过数据的key读取数据,但是该key对应数据在数据库中没有,在缓存中也没有,造成每次通过该key读取数据都会进行数据库操作,且每次读取都为null的情况。在大型项目中,这种无效的数据库操作会增加数据库的读压力。
解决方案:空值缓存、布隆过滤。
2.缓存击穿:指定key的数据在数据库中存在,但是缓存中还没有写入该key对应的数据,在高并发场景下,多个线程同时通过该key读取数据时,会因为高并发访问的原因导致同一个key对应的数据会从数据库被多次读取。
解决方案:上锁、singleflight回源操作。
3.缓存雪崩:缓存服务不具备高可用性导致大面积缓存失效的情况。
解决方案:集群,服务熔断,降级,预热,间隔更新缓存。
4.数据一致性:数据进行更新时,如何对数据进行操作才能保证数据库中的数据和缓存中的数据一致的问题。
解决方案:先更缓存再更新数据库,先更新数据库再更新缓存,先删除缓存再更新数据库,先更数据库再删缓存,先删缓存再更新数据库再删缓存,串行操作。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。