Redis服务器将所有数据库都保存在服务器状态 redis.h/redisServer 结构的 db 数组中,db 数组的每个项都是一个 redis.h/redisDb结构,每个 redis 结构代表个数据库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
structredisServer { //... redisDb *db;//数组,保存服务器中的所有数据库 //... int dbnum; //服务器数据库数量,默认16个 //... }; //数据库键空间 typedefstructredisDb { dict *dict; /* 数据库键空间,保存着数据库中所有键值对 */ dict *expires; /* 过期字典,保存所有过期时间*/ dict *blocking_keys; /* Keys with clients waiting for data (BLPOP)*/ dict *ready_keys; /* Blocked keys that received a PUSH */ dict *watched_keys; /* WATCHED keys for MULTI/EXEC CAS */ int id; /* Database ID */ longlong avg_ttl; /* Average TTL, just for stats */ list *defrag_later; /* List of key names to attempt to defrag one by one, gradually. */ } redisDb;