热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

redis穿透、击穿、雪崩如何应对

缓存穿透:key对应的数据在缓存和数据源都不存在,导致每次请求都会出现没有命中缓存,接着查询数据源,从而有可能压垮数据源。比如用一个不存在的用户id获取用户信息,在并发情况下就可能

缓存穿透:key对应的数据在缓存和数据源都不存在,导致每次请求都会出现没有命中缓存,接着查询数据源,从而有可能压垮数据源。比如用一个不存在的用户id获取用户信息,在并发情况下就可能压垮数据库。

解决思路:

1.用同一个不存在用户id去查询这种情况属于恶意请求,可以在nginx层根据ip做拦截。

2.对用户的请求参数加强过滤,比如id<1就return false。

3.缓存和数据都查不到时也可以给这个key设置一个null值,设置一个短一点的过期时间,比如30秒,也可以减少请求打到db上。

4.也可以结合布隆过滤器(Bloom Filter)对key做查询,如果返回没有 就一定没有,如果返回有 表示有可能有。

 

缓存击穿:某个热点key,在并发情况下正好缓存过期,导致大量请求没有命中缓存,接着查询数据库,虽然数据库是有数据的,但是大量请求情况下也可能出现压垮数据库。

解决思路:

1.根据情况可以设置热点key永不过期,配合定时任务更新cache,或者数据有更新再主动更新。

2.结合互斥锁处理

 

缓存雪崩:同一时间缓存大面试过期,会导致数据库在同一时间收到大量请求,可能出现压垮数据库。

解决思路:

1.分散过期时间,在设置缓存过期时间时加上一个随机的数字。

2.或者设置缓存永不过期,数据有更新再主动更新。



推荐阅读
  • 本文提供了一套实用的方法论,旨在帮助开发者构建能够应对高并发请求且易于扩展的Web服务。内容涵盖了服务器架构、数据库管理、缓存策略以及异步处理等多个方面。 ... [详细]
  • 一面问题:MySQLRedisKafka线程算法mysql知道哪些存储引擎,它们的区别mysql索引在什么情况下会失效mysql在项目中的优化场景&# ... [详细]
  • 深入理解Kafka架构
    本文将详细介绍Kafka的内部工作机制,包括其工作流程、文件存储机制、生产者与消费者的具体实现,以及如何通过高效读写技术和Zookeeper支持来确保系统的高性能和稳定性。 ... [详细]
  • 如何使用C#对TCP传输的数据进行加密以防止恶意重放攻击
    近期遇到一些恶意用户利用特定工具频繁向服务器发起连接请求,特别是登录和注册操作,导致服务器积累了大量无用数据。普通的加密方法虽然能保护数据不被篡改,但无法阻止数据被重复利用。本文探讨了有效对抗此类恶意行为的方法。 ... [详细]
  • Redis Key管理:常用命令与命名最佳实践
    本文介绍了Redis中用于管理key的多个重要命令,包括查询、修改和删除等操作,并提供了关于key命名的最佳实践建议。 ... [详细]
  • 本文继续探讨 Redis 分布式锁的高级特性,重点分析超时问题和可重入性的实现,以及如何通过不同的策略处理锁冲突。 ... [详细]
  • 腾讯视频 Node.js 服务国庆阅兵直播高并发实战
    本文分享了腾讯视频团队在国庆阅兵直播项目中,如何利用Node.js服务成功应对2.38亿次观看的高并发挑战。文章将从服务架构、可用性保障、缓存策略、日志与告警等方面详细解析。 ... [详细]
  • 本文详细介绍了如何在Apache Shiro框架中实现对并发登录人数的限制,包括配置和自定义过滤器的具体步骤。 ... [详细]
  • 本文介绍了当遇到Windows 10更新失败或需要撤回更新时的解决方法,包括通过命令行清除更新缓存和使用系统还原功能等步骤。 ... [详细]
  • 58同城的Elasticsearch应用与平台构建实践
    本文由58同城高级架构师于伯伟分享,由陈树昌编辑整理,内容源自DataFunTalk。文章探讨了Elasticsearch作为分布式搜索和分析引擎的应用,特别是在58同城的实施案例,包括集群优化、典型应用实例及自动化平台建设等方面。 ... [详细]
  • socket函数SOCKET()我们使用系统调用socket()来获得文件描述符:#include#includei ... [详细]
  • Java并发编程深入探讨:对象组合与线程安全
    本文详细介绍了如何利用现有线程安全组件构建大规模并发应用程序,探讨了设计线程安全类的关键要素,并提供了多种确保线程安全的技术方案。 ... [详细]
  • 深入解析:主流开源分布式文件系统综述
    本文详细探讨了几款主流的开源分布式文件系统,包括HDFS、MooseFS、Lustre、GlusterFS和CephFS,重点分析了它们的元数据管理和数据一致性机制,旨在为读者提供深入的技术见解。 ... [详细]
  • IntelliJ IDEA 配置详解及优化建议
    本文详细解析了 IntelliJ IDEA 的 JVM 参数配置,包括如何优化多核 CPU 性能、调整堆内存大小以及选择合适的垃圾回收器,以提升开发效率和系统响应速度。 ... [详细]
  • 本文详细介绍了 Spring Boot 的启动过程,包括初始化、资源加载、上下文创建及配置加载等关键步骤,帮助开发者深入理解 Spring Boot 的内部机制。 ... [详细]
author-avatar
上海十里红妆婚礼策划红_196
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有