|NO.Z.00056|——————————|BigDataEnd|——|Hadoop&Redis.V01|——|Redis.v01|RedisDB结构.v01|
一、RedisDB结构:底层数据结构
### --- Redis作为Key-Value存储系统,数据结构如下:
~~~ Redis没有表的概念,Redis实例所对应的db以编号区分,db本身就是key的命名空间。
~~~ 比如:user:1000作为key值,表示在user这个命名空间下id为1000的元素,
~~~ 类似于user表的id=1000的行。

二、RedisDB结构
### --- RedisDB结构
~~~ Redis中存在“数据库”的概念,该结构由redis.h中的redisDb定义。
~~~ 当redis 服务器初始化时,会预先分配 16 个数据库
~~~ 所有数据库保存到结构 redisServer 的一个成员 redisServer.db 数组中
~~~ redisClient中存在一个名叫db的指针指向当前使用的数据库
### --- RedisDB结构体源码:
typedef struct redisDb {
int id; # id是数据库序号,为0-15(默认Redis有16个数据库)
long avg_ttl; # 存储的数据库对象的平均ttl(time to live),用于统计
dict *dict; # 存储数据库所有的key-value
dict *expires; # 存储key的过期时间
dict *blocking_keys; # blpop 存储阻塞key和客户端对象
dict *ready_keys; # 阻塞后push 响应阻塞客户端 存储阻塞后push的key和客户端对象
dict *watched_keys; # 存储watch监控的的key和客户端对象
} redisDb;
~~~ # id
~~~ id是数据库序号,为0-15(默认Redis有16个数据库)
~~~ # dict
~~~ 存储数据库所有的key-value,后面要详细讲解
~~~ # expires
~~~ 存储key的过期时间,后面要详细讲解
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
浙公网安备 33010602011771号