.NET/C#面试题汇总系列:缓存

57 篇文章 1 订阅
44 篇文章 1 订阅

请列出常见的缓存方式,并简要概述其优缺点

客户端缓存,本地缓存(memorycahce),CDN缓存,反向代理缓存(Nginx),分布式缓存(Redis)

ASP.NET缓存有几种实现方式?

1)页面输出缓存:将页面全部进行缓存。
2)页面局部缓存:将页面中的一部分放在用户控件中,对该部分进行缓存。
3)数据缓存:使用Cache类进行数据缓存。
4)客户端缓存:使用HttpCachePolicy类进行客户端(浏览器)缓存。

简单聊聊缓存雪崩及解决方案?

简述:
如果缓存在一段时间内同时失效,例如我们在设置缓存时,采用了相同的过期时间,导致在某一时刻所有缓存同时失效,请求全部到数据库上,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。

解决方案:
缓存雪崩对底层系统的冲击非常可怕,造成的损失巨大。遗憾的是目前并没有比较完美的解决方案。
1)“加锁”或者“队列”方式,“加锁”或者“队列”方式保证缓存的单线程(进程)写,从而避免大量并发请求落到底层存储系统上。比如某个Key只允许一个线程查询和写缓存,其他线程等待。
2)设置分散缓存失效时间,这个是个比较简单处理方案,就是将缓存失效时间分散开,比如我们在原有失效时间上增加一个随机值,如1~6分钟随机,尽量让缓存不要同时失效,从而尽量避免缓存雪崩。
3)单独处理热门数据, 对于一些热门数据的持续读取,这种缓存数据也可以采取定时更新的方式来刷新缓存,避免自动失效。
4)从服务器和接口处解决。如果服务和接口都有限流机制,就算缓存全部失效了,但是请求的总量是有限制的,可以在承受范围之内,这样短时间内系统响应慢点,但不至于挂掉,影响整个系统。
5)设置热点数据永远不过期
缺点:会造成写一致问题,当数据库数据发生更新时,缓存中的数据不会及时更新,这样会造成数据库中的数据与缓存中的数据的不一致,应用会从缓存中读取到脏数据。可采用延时双删策略处理。




在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YSの陈憨憨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值