Redis 语言学习笔记
简介
Redis 是基于 c 语言编写的开源非关系型内存数据库,可以用作数据库、缓存、消息中间件。
数据类型
String: 字符串类型List: 列表类型Set: 无序集合类型ZSet: 有序集合类型Hash: 哈希表类型
Redis 核心对象
redisObject, 用这个结构体来表示 String、Hash、List、Set、ZSet 五种数据类型。
redisObject 字段
struct redisObject{
type
encoding
ptr
vm
others
}
| 数据类型 | 编码方式 |
|---|---|
| String | embstr |
| raw | |
| int | |
| Hash | ht |
| ziplist | |
| List | linkedlist |
| ziplist | |
| Set | ht |
| inset | |
| ZSet | ziplist |
| skiplist |
不同类型和编码的对象
| 类型 | 编码 | 对象 |
|---|---|---|
| REDIS_STRING | REDIS_ENCODING_INT | 使用整数值实现的字符串对象 |
| REDIS_STRING | REDIS_ENCODING_EMBSTR | 使用 embstr 编码的简单动态字符串实现的字符串对象 |
| REDIS_STRING | REDIS_ENCODING_RAW | 使用简单动态字符串实现的字符串对象 |
| REDIS_LIST | REDIS_ENCODING_ZIPLIST | 使用压缩列表实现的列表对象 |
| REDIS_LIST | REDIS_ENCODING_LINKEDLIST | 使用双端链表实现的列表对象 |
| REDIS_HASH | REDIS_ENCODING_HT | 使用字典实现的哈希对象 |
| REDIS_HASH | REDIS_ENCODING_ZIPLIST | 使用压缩列表实现的哈希对象 |
| REDIS_SET | REDIS_ENCODING_INTSET | 使用整数集合实现的集合对象 |
| REDIS_SET | REDIS_ENCODING_HT | 使用字典实现的集合对象 |
| REDIS_ZSET | REDIS_ENCODING_ZIPLIST | 使用压缩列表实现的有序集合对象 |
| REDIS_ZSET | REDIS_ENCODING_SKIPLIST | 使用跳跃表和字典实现的有序集合对象 |