石家庄建设网站公司简介,网络小说网站三巨头,郑州企业网络推广,网站改版建设方案目录
Redis 适合的场景
Redis 不适合的场景
3、Redis 有哪些常见的功能#xff1f;
什么是缓存穿透#xff1f;怎么解决#xff1f;
什么是缓存雪崩#xff1f;该如何解决#xff1f;
参考文献#xff1a; Redis 适合的场景 缓存#xff1a;减轻 MySQL 的查询压力…目录
Redis 适合的场景
Redis 不适合的场景
3、Redis 有哪些常见的功能
什么是缓存穿透怎么解决
什么是缓存雪崩该如何解决
参考文献 Redis 适合的场景 缓存减轻 MySQL 的查询压力提升系统性能 排行榜利用 Redis 的 SortSet有序集合实现 计算器/限速器利用 Redis 中原子性的自增操作我们可以统计类似用户点赞数、用户访问数等。这类操作如果用 MySQL频繁的读写会带来相当大的压力限速器比较典型的使用场景是限制某个用户访问某个 API 的频率常用的有抢购时防止用户疯狂点击带来不必要的压力 好友关系利用集合的一些命令比如求交集、并集、差集等。可以方便解决一些共同好友、共同爱好之类的功能 消息队列除了 Redis 自身的发布/订阅模式我们也可以利用 List 来实现一个队列机制比如到货通知、邮件发送之类的需求不需要高可靠但是会带来非常大的 DB 压力完全可以用 List 来完成异步解耦 Session 共享Session 是保存在服务器的文件中如果是集群服务同一个用户过来可能落在不同机器上这就会导致用户频繁登陆采用 Redis 保存 Session 后无论用户落在那台机器上都能够获取到对应的 Session 信息。。
Redis 不适合的场景
数据量太大、数据访问频率非常低的业务都不适合使用 Redis数据太大会增加成本访问频率太低保存在内存中纯属浪费资源。
3、Redis 有哪些常见的功能 数据缓存功能 分布式锁的功能 支持数据持久化 支持事务 支持消息队列
什么是缓存穿透怎么解决
缓存穿透是指查询一个一定不存在的数据由于缓存是不命中时需要从数据库查询查不到数据则不写入缓存这将导致这个不存在的数据每次请求都要到数据库去查询造成缓存穿透。
解决缓存空对象如果一个查询返回的数据为空不管是数据不存在还是系统故障我们仍然把这个空结果进行缓存但它的过期时间会很短最长不超过五分钟。
布隆过滤器将所有可能存在的数据哈希到一个足够大的 bitmap 中一个一定不存在的数据会被这个 bitmap 拦截掉从而避免了对底层存储系统的查询压力。
缓存空对象带来的问题 空值做了缓存意味着缓存中存了更多的键需要更多的内存空间比较有效的方法是针对这类数据设置一个较短的过期时间让其自动剔除。 缓存和存储的数据会有一段时间窗口的不一致可能会对业务有一定影响。例如过期时间设置为 5分钟如果此时存储添加了这个数据那此段时间就会出现缓存和存储数据的不一致此时可以利用消息系统或者其他方式清除掉缓存层中的空对象。
什么是缓存雪崩该如何解决
如果缓存集中在一段时间内失效发生大量的缓存穿透所有的查询都落在数据库上造成了缓存雪崩。 加锁排队在缓存失效后通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个 key 只允许一个线程查询数据和写缓存其他线程等待 数据预热可以通过缓存 reload 机制预先去更新缓存再即将发生大并发访问前手动触发加载缓存不同的 key设置不同的过期时间让缓存失效的时间点尽量均匀 做二级缓存或者双缓存策略Cache1 为原始缓存Cache2 为拷贝缓存Cache1 失效时可以访问 Cache2Cache1 缓存失效时间设置为短期Cache2 设置为长期。 在缓存的时候给过期时间加上一个随机值这样就会大幅度的减少缓存在同一时间过期。
参考文献
整理好了Redis面试题