Redis 常见的性能问题都有哪些?如何解决?

  1. Master  写内存快照   save命令 会调rdbsave 函数 会阻塞主线程的工作  会间断性暂停服务  所以 Master  最好不要写内存快照
  2. Master  aof  持久化    如果 不重写 aof 文件  这个持久化 方式 对性能的影响 是 最小的  但是 aof 文件 会 不断 增大 包括 内存快照 和 aof 日志文件 特别 是不要启用 快照 持久化 如果 数据比较 关键  某个slave 开启aof 备份数据  策略 每秒同步一次
  3. Master   调用 bgrewriteaof 重写aof 文件 aof 在重写的时候 会占大量的 cpu 和内存资源  导致 服务 load  过高  出现短暂的服务暂停现象
  4. redis 主从复制性能 为了主从复制的速度和稳定性 slave 和Master  最好曾同意局域网内

缓存穿透

是指数据库中没有数据  而用户 不断的发起请求  像一些不存在的数据  这个时候 会导致数据库压力过大

解决: 接口层加校验   

如果 缓存 和数据库 取不到数据 这是将key-value对写为key-null , 把缓存的过期时间设置短点 这样可以防止用户的暴力攻击

缓存击穿

是指 缓存中没有数据  但数据库有数据   一般是因为缓存过期  这是 由于并发用户特别的多    同时没有读到数据  又同时去数据库 取数据 引起 数据库压力 瞬间 增大  造成过大压力

解决: 设置热点 永不过期   加互斥锁  

缓存雪崩

缓存的大批量数据到过期时间  而查询数据量巨大  引起的数据库压力大 甚至 宕机  

和缓存击穿不同的是   缓存 击穿 指的是 并发查询一条数据  缓存雪崩是不同数据都 过期了  很多数据都查不到而查数据库

解决:

  1. 缓存的 过期时间设置随机 防止同意时间大量过期现象发生
  2. 如果是分布式部署  将热点数据均匀分布
  3. 设置热点数据用不过期
  4. 采用限流
  5. 高可用做集群
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值