Redis

数据类型和命令

string

set
get

list

lpush
lpop
rpush
rpop

底层实现是链表,量少时为zipset,即数组的连续区域。量大时为quickset,即将多个zipset用指针连接起来

hash

hset
hget

set

sadd
smembers

sortedset

zadd
zrange

底层实现为跳跃列表,跳表

跳表

个人总结:

  • 首先是一个有序链表
  • 为了提高查询速度,给每个节点增加多个索引,指向更后面的节点。由O(n) ——> O(log(n))
  • 抛硬币决定加几层索引,即第一层100%,第二层50%,第三层25%...

为啥不用平衡树(平衡排序树):

  • 插入删除不用调整子树,更简单迅速
  • 范围查找比平衡树好
  • 算法实现简单

跳表

集群模式

主从复制

介绍:

  • 主服务器读写
  • 从服务器备份,提供读

特点:

  • 读写分离
  • 容灾恢复

缺点:

  • 写能力未提高
  • 不支持自动恢复
  • 故障时可能有部分数据未同步

哨兵模式

带哨兵的主从复制模式,可以自动切换master

集群模式

分布式的多节点
每个节点带从节点,带监控模式,可以自动切换 master

应用场景

  • 分布式缓存
  • 分布式锁

参考文章:

通俗易懂的Redis数据结构基础教程

跳表──没听过但很犀利的数据结构


发布于 2020/08/22 浏览