REDIS 较宽泛的支持5种数据结构 分别为
- 字符串
- 列表
- 集合
- 散列
- 有序集合
关于这几种数据结构的使用 相信网上有很多资料,查看官网API 也很详细了 读者可以自己随意翻阅 很方便 。
接下来介绍的是 这些数据结构背后的实现 。更底层的数据结构实现
(1)先介绍SDS这种数据结构 :SDS【simple dynamic string】简单动态字符串
我们先说场景:比如用的比较多的SET命令 set msg "hello"
那么过程是什么样子的呢
Redis将在数据库中创建一个新的键值对
- 键值对的键是一个字符串,底层实现是保存了"msg"的SDS
- 键值对的值也是一个字符串对象,对象的底层实现也是保存了字符串"hello"的SDS
(2)链表
integers 底层实现就是一个链表,每个节点保存了一个整数值
场景:发布与订阅、慢查询、监视器等功能也用了链表,Redis服务器本身还使用了链表来保存多个客户端的状态信息,以及使用链表来构建客户端输出缓冲区
(3)字典
1.Redis数据库就是使用字典来作为底层实现的,对数据库的增、删、改都是构建在字典之上的
set msg "hello"
还是这个例子 这个键值对就是保存在代表数据库的字典里面的
2.还有一种场景
之前的散列结构
website键的底层实现就是一个字典,字典包含了10086个键值对
(4)跳跃表
...未完待续