Redis常见问题总结

发布于:2024-12-05 ⋅ 阅读:(98) ⋅ 点赞:(0)

Redis常见问题总结

1.Redis分布式存储方案

分布式存储 核心特点
主从(Master/Slave)模式 一主多从,故障时手动切换。
哨兵(Sentinel)模式 有哨兵的一主多从,主节点故障自动选择新的主节点。
集群(Cluster)模式 分节点对等集群,分slots,不同slots的信息存储到不同节点。

在这里插入图片描述

2. Redis 集群切片的常见方式

分片方案 分片方式 说明
范围分片 按数据范围值来做分片 eg: 按照订单编号分片,0~9 映射到实例A;11~20 映射到实例B
哈希分片 通过对key进行hash运算分片 可以把数据分配到不同实例,hash(key),这个类似于取余操作,余数相同的,放在一个实例上。
一致性哈希分片 哈希分片的改进 利于扩展节点,可以有效解决重新分配节点带来无法命中的问题。

3. Redis 数据淘汰算法

淘汰范围 机制名 策略解释
不淘汰 noeviction 禁止驱动数据,内存不足以容纳新入数据时,新写入操作就会报错。系统默认的一种淘汰策略。
设置了过期时间的键空间 volatile-random 随机移除某个key
volatile-lru 优先移除最近未使用的key[局部性原理]
volatile-ttl ttl值小的key优先移除
全键空间 allkeys-random 随机移除某个key
allkeys-lru 优先移除最近 未使用的key

4. Redis 的持久化

Redis的持久化主要有两种方式 RDB和AOF

RDB(Redis DataBase):传统数据库中快照的思想。指定时间间隔数据进行快照存储。

AOF(Append-Only File):传统数据库中日志思想,把每条该表数据集的命令追加到AOF文件末尾,这样出了问题了,可以重新执行AOF文件中的命令来重建数据集

对比维度 RDB持久化 AOF持久化
备份量 重量级的全量备份,保存整个数据库 轻量级增量备份,一次只保存一个修改命令
保存间隔时间 保存间隔时间长 保存间隔时间短,默认1秒
还原速度 数据还原速度快 数据还原速度慢
阻塞情况 save会阻塞,但bgsave或者自动不会阻塞 无论是平时还是AOF重写,都不会阻塞
数据体积 同等数据体积:小 同等数据体积:大
安全性 数据安全性:低,容易丢数据 数据安全性:高,根据策略决定

5. Redis 常见问题

1.缓存雪崩

大部分缓存失效–>数据库崩溃

解决方案:

  1. 使用锁或队列: 保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存储系统上。

  2. 为key 设置不同的缓存失效时间:在固定的一个缓存时间的基础上+随机一个时间作为缓存失效时间。

  3. 二级缓存: 设置一个有时间限制的缓存+一个无时间限制的缓存。避免大规模访问数据库。

2. 缓存穿透

查询无数据返回-> 直接查数据库

解决方案:

  1. 如果查询结果为空,直接设置一个默认值存放到缓存,这样第二次到缓存汇总获取就有值了,设置一个不超过5分钟的过期时间,以便能正常更新缓存。
  2. 设置布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。
3. 缓存预热

系统上线后,将相关需要缓存数据直接加到缓存系统中。

解决方案:

1.直接写个缓存刷新页面,上线时手动操作

2.数据量不大时,可以在项目启动的时候自行进行加载

3.定时刷新缓存


网站公告

今日签到

点亮在社区的每一天
去签到