05-Redis 原理
2022-03-22 11:22:25 5 举报
AI智能生成
Redis是一种高性能的键值存储系统,它支持多种数据结构,如字符串、列表、集合、散列和有序集合。Redis采用内存存储数据,读写速度快,适用于高并发场景。它还具有持久化功能,可以将数据定期保存到磁盘中,以防止数据丢失。此外,Redis还支持分布式锁和事务等功能,可以满足复杂的业务需求。总之,Redis是一种功能强大、性能优越的键值存储系统,广泛应用于各种场景中。
作者其他创作
大纲/内容
持久化
持久化数据和缓存怎么做扩容?
一致性Hash
AOF
基本原理
写后日志
3种刷盘策略
分支主题
AOF 重写
如何配置
原理
和RDB比较
一些问题
8. Redis AOF不也要把日志写到磁盘么,那和MySQL的IO有啥区别,凭啥Redis就快
AOF 也有两个潜在的风险
采用fork子进程重写AOF文件时,潜在的阻塞风险?
AOF 重写也有一个重写日志,为什么它不共享使用 AOF 本身的日志呢
RDB
基本原理
bgsave
写时复制
RDB过程
什么时候RDB
RDB文件结构?
分支主题
一些问题
RDB可能会丢失数据,怎么办?
混合持久化
实战
数据备份策略
2.如何选择合适的持久化方式
事件驱动
线程模型
单线程
为什么使用单线程
为什么单线程快?
真的是单线程么?
多线程
为何引入?
性能的提升效果如何?
是否会存在线程并发安全问题?
多线程实现机制?
分支主题
一些问题
与Memcached多线程模型的对比
服务端
启动流程
启动源码
流程
分支主题
时间事件做了什么?
流程
子主题 1
分支主题
命令请求处理过程
流程
分支主题
源码
事件驱动原理
Reactor 模型
事件类型
三个关键角色
为什么用epoll
事件驱动框架
IO复用
事件回调
事件初始化
事件捕获、分发和处理主循环
客户端
流程
高可用
高可用通用方式
复制
主从复制的原理吗?
部分复制原理
分支主题
全量复制-命令过程
分支主题
一些问题
9.主从复制的过程中如果因为网络原因停止复制了会怎么样?
主从
主从同步原理
哨兵
概念
为什么需要?
哨兵原理
过程
1、监控
2、选举
3、通知
哨兵集群
为什么要哨兵集群
基于 pub/sub 机制的哨兵集群组成
故障转移原理
1、客观下线过程?
2、选举过程?
客户端是怎么定位数据的?
如果重新选举了主节点,客户端怎么感知的?
一些问题
为什么Redis哨兵集群只有2个节点无法正常工作?
同步配置的时候,其他哨兵根据什么更新自己的配置呢?
在哨兵进行主从切换过程中,客户端能否正常地进行请求操作呢?
如果想要应用程序不感知服务的中断,还需要哨兵或需要客户端再做些什么吗?
哨兵集群中有实例挂了,怎么办,会影响主库状态判断和选主吗?
Cluster
原理
Redis cluster 原理
1、槽分派
2、重新分片
3、集群间的通信机制 gossip
客户端如何定位数据?
重定向机制
故障转移原理
故障检测
集群选举原理
一些问题
集群脑裂数据丢失问题
Redis 一致性 hash 算法讲一下?有节点挂了,怎么处理?(转移数据到下一个在 hash 环上比它大的节点)
如果说只有 3 个节点,但是总共有 10 亿条数据在三个点里面,有一个挂了,就要有 3 亿数据转移,这显然不合理,Redis 怎么处理这个情况?
Redis集群为什么至少需要三个master节点,并且推荐节点数为奇数?
集群是否完整才能对外提供服务
限制Redis Cluster规模的关键因素?
Redis集群对批量操作命令的支持
Redis Cluster为什么不采用把key直接映射到实例的方式?
哨兵和Redis cluster 集群方案的比较
Codis
集群管理的最核心问题
1、请求路由
2、数据迁移(扩容/缩容/数据平衡)
其他
客户端
交互协议
管道
6.0
分支主题
Lua
原理
两个协作组建
1、伪客户端
2、字典
1、基础
基础
什么是 Redis?
优缺点
Redis 的读和写的速度
为什么这么快?
Redis 和 memcached 相比有什么优势?
为什么要用Redis而不用map/guava做缓存?
为什么要用Redis做缓存?
Redis的常用场景有哪些?
事务、发布订阅
事务
概念
三个阶段
相关命令
支持隔离性吗?
原理
WATCH实现
为什么不支持事务回滚?
事务其他实现
发布订阅
2、数据结构与对象
6 种数据结构
字典
哈希表结构
哈希算法
Redis 冲突的怎么办?
其他的Hash冲突解决办法?
Rehash,负载因子?
什么时候rehash
源码
为什么和rehash 和 RDB和AOF相关?
rehash过程
渐进式Rehash
为什么要?
渐进式rehash执行时,字典是怎么应对命令操作的?
怎么知道上次rehash的进度的?
可以用子线程来rehash么
过程
源码
分支主题
连续碰到多个bucket为空时,主线程会一直rehash么?
rehash清空h(0)的时间复杂度
链表
数据结构
特性
字符串
Redis 中的字符串和C语言中的有什么不同
源码分析
跳跃表
数据结构
时空复杂度
为什么会选择用跳表来实现有序集合呢? 为什么不用红黑树呢?
整数集合
数据结构
升级
5种数据对象
字符串对象
3种编码
分支主题
列表 list
集合对象 (Set)
哈希对象
实现
有序集合 Zset
实现
压缩列表
分支主题
skiplist (跳跃表) 编码
为什么需要同时使用字典表和跳跃表?
其他
redisObject
为什么需要包一层
结构
内存回收与对象共享
实战
Redis 如何查询出所有以 ABC 为开头的 key?(scan)有什么问题?(会有跟上次遍历重复的数据)?怎么导致的?(底层数据结构原理)
一个字符串类型能最大容量是多少?
数据库
过期键
删除策略
三种删除Key的方式
Redis key的过期时间和永久有效分别怎么设置?
redis 是怎么淘汰时间过期的 key?(两种过期 key 淘汰策略)
AOF 和 RDB对过期键的处理
RDB
AOF
复制对过期键的处理
内存淘汰策略
八种内存淘汰策略
分支主题
设置多大缓存容量合适?
实战
怎么选择合适的内存淘汰策略?
阅读建议
标注的就是重点了,其他的看看就好
0 条评论
下一页