主要体现在一下几点

  1. 功能强大
  2. 持续改进
  3. 经久不衰
  • 高性能:

    • 底层使用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文件损坏