美文网首页
redis一些问题点整理

redis一些问题点整理

作者: 奔向学霸的路上 | 来源:发表于2020-06-16 13:29 被阅读0次

缓存雪崩

假设有如下一个系统,高峰期请求为5000次/秒,4000次走了缓存,只有1000次落到了数据库上,数据库每秒1000的并发是一个正常的指标,完全可以正常工作,但如果缓存宕机了,每秒5000次的请求会全部落到数据库上,数据库立马就死掉了,因为数据库一秒最多抗2000个请求,如果DBA重启数据库,立马又会被新的请求打死了,这就是缓存雪崩。

解决方案
事前:redis高可用,主从+哨兵,redis cluster,避免全盘崩溃
事中:本地ehcache缓存 + hystrix限流&降级,避免MySQL被打死
事后:redis持久化,快速恢复缓存数据

redis哨兵

原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。(实际上我的简单理解就是定时监控,通过ping来进行故障转移、通过选举算法来选出新领导)可参考https://www.cnblogs.com/leeSmall/p/8398401.html

缓存穿透

假如客户端每秒发送5000个请求,其中4000个为黑客的恶意攻击,即在数据库中也查不到。举个例子,用户id为正数,黑客构造的用户id为负数

解决方案

  1. 接口层增加校验,把不符合条件的进行拦截
  2. 从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用),这样可以防止攻击用户反复用同一个id暴力攻击。
  3. 布隆过滤器,将所有可能存在的数据哈希到一个足够大的 bitmap 中,一个一定不存在的数据会被这个 bitmap 拦截掉,从而避免了对底层存储系统的查询压力

缓存击穿

缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。和缓存雪崩不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。
解决方案

  1. 设置热点数据永远不过期。
  2. 加互斥锁,互斥锁

参考:https://blog.csdn.net/ThinkWon/article/details/103402008

相关文章

  • redis一些问题点整理

    缓存雪崩 假设有如下一个系统,高峰期请求为5000次/秒,4000次走了缓存,只有1000次落到了数据库上,数据库...

  • Redis安装与配置

    今天在使用Redis的时候遇到了一些问题,这个问题的解决,发现很多人使用Redis的时候没有一点安全意识。所以又重...

  • Java开发技术大杂烩(一)之Redis、Jmeter、MySQ

    前言 毕业答辩告一段落,接下来好好努力工作。 Redis遇到的一些问题 这是redis的保护机制,连接redis只...

  • Redis整理

    Redis简介 Redis是一个速度非常快的非关系数据库(non-relational database),它可以...

  • Redis整理

    DOC 连接操作相关的命令 默认直接连接 远程连接-h 192.168.1.20 -p 6379 ping:测试...

  • redis整理

    redis整理 - redis是啥? redis是一个高性能的key-value数据库(好像很简单的样子) - 那...

  • redis整理

    redis 使用单进程单线程,减少内存拷贝,不存在上下文切换,提高性能。 直接内存操作。 过期策略redis也是惰...

  • redis整理

    一 主从复制 基本原理:https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEw...

  • Redis整理

    1.什么是 Redis? Redis 是完全开源免费的,遵守BSD协议,是性能极高的nosql数据库,Key-Va...

  • Redis整理

    Redis 简介 Redis 是完全开源免费的,遵守BSD协议[https://www.jianshu.com/p...

网友评论

      本文标题:redis一些问题点整理

      本文链接:https://www.haomeiwen.com/subject/shahxktx.html