文章目录
1. Redis缓存穿透:
2. Redis缓存雪崩:
3. Redis缓存击穿:
统一解决方案:布隆过滤器、分布式锁
4. 布隆过滤器:
特点是高效地插入和查询,用来告诉你 某样东西一定不存在或者可能存在
优点:
1. 本质上布隆过滤器是一种数据结构(一个 bit 向量或者说 bit 数组), 存储空间少
2. 不需要存储元素本身,在某些对保密要求非常严格的场合有优势
缺点:
1. 高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的
2. 传统的布隆过滤器并不支持删除操作
(使用变形Counter Bloom Filter,把位数组变成整数数组,每插入一个元素相应的计数器加1,
这样删除元素时,将计数器减掉就可以,但是首先要保证删除的元素在布隆过滤器中)
优点:查询速度快,数据安全性高
缺点:误判,没有删除
5. Redis 持久化方式:
快照是默认的持久化方式,默认配置:
save 900 1 #900秒内如果超过1个key被修改,则发起快照保存
save 300 10 #300秒内容如超过10个key被修改,则发起快照保存
save 60 10000
1.快照方式(Snapshotting):生成RDB文件,RDB持久化方式会在一个特定的间隔保存一个数据快照。
2.追加文件方式(Append-only file):生成AOF文件,AOF持久化方式则会记录每一个服务器收到的写操作。
在服务启动时,这些记录的操作会逐条执行从而重建出原来的数据。
写操作命令记录的格式跟Redis协议一致,以追加的方式进行保存。
3.Redis 还可以同时使用 AOF 持久化和 RDB 持久化。 在这种情况下,
当 Redis 重启时,它会优先使用 AOF 文件来还原数据集,
因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。
6. Redis 主从如何同步(复制)数据:
1.无论是初次连接还是重新连接,当建立一个从服务器时,从服务器都将给主服务器发送一个 SYNC 命令
2.接到 SYNC 命令的主服务器将开始执行 BGSAVE,保存操作执行期间,将所有新执行的命令都保存到一个缓冲区里面,
BGSAVE 执行完毕后,主服务器将.rdb 文件发送给从服务器
3.从服务器接收这个 .rdb 文件,并将文件中的数据载入到内存中
4.之后主服务器会以 Redis 命令协议的格式,将写命令缓冲区中的内容发送给从服务器
7. Redis 支持存储类型:
- String(字符串)
- List(列表)
- Hash(字典)
- Set(集合)
- Sorted Set(有序集合)
8. Redis 有序集合是怎么实现的:
Redis使用跳跃表作为有序集合键的的底层实现,Redis只在两个地方用到了跳跃表,一个是实现有序集合键,另一个是在集群节点中用作内部数据结构。
9. Redis 淘汰策略:
过期策略
定期删除
惰性删除