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 | 使用跳跃表和字典实现的有序集合对象 |