Redis问题汇总

(1)Redis支持的数据类型
  1. 字符串(string)
  2. 列表(list)
  3. 哈希(hash)
  4. 集合(Set)
  5. 有序集合(ZSet)
(2)什么是持久化?Redis支持哪几种持久化?
  1. 持久化就是把内存的数据写到内存当中,防止服务宕机,数据内存丢失。
  2. Redis支持RDB和AOF两种持久化功能
    • RDB:RDB 是把内存中的数据集以快照形式写入磁盘,实际操作是通过 fork 子进程执行,采用二进制压缩存储;
    • AOF:AOF 是以文本日志的形式记录 Redis 处理的每一个写入或删除操作。
  3. 内容是redis通讯协议(RESP)格式的命令文本存储
(3)AOF和RDB的区别
  1. AOF文件比RDB更新频率高,优先使用aof还原数据
  2. aof比rdb更安全也更大
  3. rdb性能比aof好
  4. 如果两个都配置了,优先加载aof
(4)什么是RESP?有什么特点?
  • RESP是redis客户端和服务端之间使用的一种通讯协议
  • RESP的特点是:实现简单、快速解析、可读性好。
(5)Redis缓存雪崩、缓存穿透、缓存击穿
  • 缓存雪崩
    • 产生原因:缓存挂掉,这时所有请求都会穿透到数据库
    • 解决方案:①使用快速失败的熔断策略,较少DB瞬间压力; ②使用主从模式和集群模式来尽量保证缓存服务的高可用
  • 缓存击穿:
    • 产生原因:就是某个热点数据失效时,大量针对这个数据的请求会穿透到数据源
    • 解决方案:
      1. 可以使用互斥锁更新,保证同一个进程中针对同一数据不会并发请求到DB,较少DB压力
      2. 使用随机退避的方式,失效时随机sleep一个很短时间,在此查询,如果失败再执行更新
      3. 针对多个热点key同时失效的问题,可以再缓存时使用固定时间加上一个小的随机数,避免大量热点key同一时刻失效
  • 缓存穿透:
    • 产生原因:产生这个问题的原因可能是外部的恶意攻击,如攻击者使用不存在的用户id频繁请求接口,导致缓存不命中,然后穿透DB查询依然不命中,这时会有大量请求穿透缓存访问DB
    • 解决方案:
      • 对不存在的用户,在缓存中保存一个空对象进行标记,防止相同ID再次访问DB,
      • 使用BloomFilter过滤器,其特点是存在性检测,如果BloomFilter中不存在,那么数据一定不存在。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fantongl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值