码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Redis面试题(五)


    文章目录

    • 前言
    • 一、使用过 Redis 做异步队列么,你是怎么用的?有什么缺点?
    • 二、 什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?
    • 总结


    前言

    1. 使用过 Redis 做异步队列么,你是怎么用的?有什么缺点?
    2. 什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?

    `

    一、使用过 Redis 做异步队列么,你是怎么用的?有什么缺点?

    一般使用 list 结构作为队列,rpush 生产消息,lpop 消费消息。当 lpop 没有消息的时候,要适当 sleep
    一会再重试。
    缺点:
    在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如 rabbitmq 等。
    能不能生产一次消费多次呢?
    使用 pub/sub 主题订阅者模式,可以实现 1:N 的消息队列。


    二、 什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?

    缓存穿透
    一般的缓存系统,都是按照 key 去缓存查询,如果不存在对应的 value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的 key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。
    如何避免?

    1. 对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该 key 对应的数据 insert 了之后清理缓存。
    2. 对一定不存在的 key 进行过滤。可以把所有的可能存在的 key 放到一个大的 Bitmap 中,查询时通过该 bitmap 过滤。
      缓存雪崩
      当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,会给后端系统带来很大压力。导致系统崩溃。
      如何避免?
    3. 在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个 key 只允许一个线
      程查询数据和写缓存,其他线程等待。
    4. 做二级缓存,A1 为原始缓存,A2 为拷贝缓存,A1 失效时,可以访问 A2,A1 缓存失效时间设置为短期,A2 设置为长期
    5. 不同的 key,设置不同的过期时间,让缓存失效的时间点尽量均匀

    总结

    1. 使用过 Redis 做异步队列么,你是怎么用的?有什么缺点?
    2. 什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?
  • 相关阅读:
    《最新出炉》系列初窥篇-Python+Playwright自动化测试-14-playwright操作iframe-番外篇
    【MongoDB-Redis-MySQL-Elasticsearch-Kibana-RabbitMQ-MinIO】Java全栈开发软件一网打尽
    【PWN】初见BROP
    DirectX12学习笔记-创建窗口
    RabbitMQ原理和界面操作
    Java-随机数据生成器(造数据)
    Linux操作系统的基础指令 III
    【JAVA】Request&Response
    pytest-fixture固件的使用
    目标检测论文解读复现之九:基于改进YOLOv5的复杂场景下SAR图像船舶检测方法
  • 原文地址:https://blog.csdn.net/weixin_47924016/article/details/133086257
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号