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