主要体现在一下几点
- 功能强大
- 持续改进
- 经久不衰
-
高性能:
- 底层使用C语言编写,内存数据库,通讯采用epoll非阻塞I/O多路复用机制
-
线程安全:
- redis的操作都是单线程的,保证了原子操作。多线程体现在网络协议解析和同步数据上。所以redis底层核心操作还是由单线程来完成的,以致于redis在高并发场景避免一些数据不安全的问题。
-
功能丰富:
- 数据结构:基本:String、List、HashSet、SortedSet;高阶:GEO、BitMap、HyperLogLog
- 持久化机制:RDB持久化、AOF持久化、RDB-AOF混合持久化(v4.0+)
- 主从集群:Master-Slave集群解决高并发问题
- 哨兵(Sentinel):解决主从集群主节点单点故障问题,使用哨兵集群机制。监控主节点出现采用选举方式完成主从切换
- 集群cluster:项目大存储数据越多,使用分片存储的方式
- 模块化:v4.0+ 自定义实现项目中的个性化需求
项目中出现问题的一些解决方案:
-
系统响应慢:
- 用最合适的数据类型来缓存、查看慢日志、优化BigKey、使用连接池优化
-
缓存异常:
- 分布式锁、LUR淘汰算法
-
数据丢失、数据不安全、数据一致性
- RDB-AOR混合持久化、全量/部分不同、主从复制数据一致性
-
主从复制故障
- 哨兵监控、主观/客观下线
-
存储不够用
- 集群分片存储、集群内部原理、故障自动转移
-
服务器宕机
- 集群动态收缩、MOVED/ASK转向、故障演示与恢复方案
-
底层原理
- 网络底层、事务处理、持久化原理、主从复制原理、哨兵机制、分片存储原理
-
底层算法
- Sorted Set底层、Bigmap、Geo算法、数据过期淘汰算法、Leader选举流程、槽位定位算法、备份迁移及其算法
-
性能提升方案
- Key与Value设计规范、避免BigKey、避免耗时操作、Pipeline管道操作、连接池性能优化、子进程的开销与优化
-
故障解决方案
- 数据延迟、数据脏读、数据 抖动、数据一致性、热点数据存储、RDB文件损坏
评论区