Redis 常见问题

1、redis 使用场景?

高并发、高性能

2、高并发场景,Redis 的优势和作用

redis 的所有操作都是在内存(主存)中进行,所以天然就有速度快的优势,而且吞吐量也很大,远远超过关系型数据库的吞吐量。而且 redis 在主存中是顺序执行的,所以无需考虑数据一致性。

redis 单机吞吐量 10 W,mysql 单机 吞吐量 8K 。

所以在高并发场景中,可以通过 redis 来减少后端关系型数据库的压力。

3、redis 如何提高性能?

将查询很耗时间的数据存于 redis,再次访问时直接从缓存获取,则可以提高响应速度

4、如何保证 redis 高可用?

生产者开启 ack 机制

redis 开启队列持久化和消息持久化

消费者 实行手动 ack 机制

5、缓存雪崩、缓存击穿、缓存穿透

  • 缓存穿透:大量请求在缓存中未命中,大量请求到数据库

    解决1:在大量请求缓存未命中时,在第一次请求到数据库时,将 null 存入缓存,避免后续请求到数据库

    解决2:加过滤器,过滤器中保持 mysql 中所有ID,如果ID不在,打回,但是内存会占用过大,所有采用布隆算法(用容错率换取空间):将ID 使用多个哈希算法计算,将多个值存入 bit 数组下标位置,查询时,则先计算多个哈希值,在 bit 数组中进行查询,组合查询ID,都每个哈希值都查询到才算数据存在(多个哈希函数用于降低哈希碰撞)

  • 缓存击穿:高并发热点key过期,导致瞬间大量访问数据库

    解决1:热点key永不过期

    解决2:使用分布式锁在 redis和MySQL之间,保证每次查询只有一个到数据库

  • 缓存雪崩:redis 宕机导致大量请求到mysql,使mysql挂掉

    解决:使用 redis 主从哨兵集群模式

6、缓存与数据库双写不一致

7、redis 数据丢失

redis 过期策略:定时删除 + 惰性删除

内部淘汰机制:按不同的机制来使内存不足时删除数据、自定义淘汰算法

8、如何保证 redis 高并发高可用?

高并发使用主从架构:一主多从,读写分离,主来写,从同步用于查询,

高可用使用主从架构加哨兵:服务宕机进行主备切换

9、redis 主从架构如何保证数据不丢失?

定时生成 RDB 快照文件: 数据恢复快,但是当快照大时,可能影响响应速度,最大丢失时间差数据,适合冷备

AOF:记录操作日志, 数据丢失少,数据恢复慢

10、redis 集群之分布式切片

优雅的一致性Hash 算法

 

  • 定义哈希环,假设是 2^32

  • 分片规则:(ip+id)% 哈希环 = num

    num 的肯定在 [0,2^32-1] 之间,则每条数据在哈希环上都有一个坐标,按照哈希环进行顺时针寻找最近的 redis 数据库进行存储数据

  • 数据迁移:

    新增:如果在redis 2 和 3 之间新增 redis 4,则只需要将哈希环中redis 2 和 4之间的数据迁移到 redis 4

    删除:如果删除 redis 3,则只需要将 redis3 迁移至 redis 1即可

  • 缺点:数据倾斜

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值