每个redisDb代表一个数据库,一个数组,保存着服务器中的所有数据库,每个数组元素代表一个数据库,数组元素类型中的属性dict字典保存了一个数据库中的所有键值对,这个字典称为键空间;
1、服务器中的数据库
struct redisServer
{
redisDb *db;//一个数组,保存着服务器中的所有数据库
//...
int dbnum;//服务器的数据库数量,默认为16;
};
2、切换数据库
每个Redis客户端都有自己的目标数据库,默认情况下,Redis客户端的目标数据库为0号数据库;
typedef struct redisClient
{
redisDb *db;
//...
};
可以使用select命令来切换数据库;
3、数据库键空间
typedef struct redisDb
{
//...
dict *dict;
//...
}redisDb;
键空间的键也是数据库的键,每个键对应一个字符串对象;
键空间的值也是数据库的值,每个值可以是字符串对象、列表对象、哈希表对象、集合对象、有序集合对象中的任意一种对象;
举例:如果在空白的数据库中执行以下命令
alphabet是一个列表键;
book是一个哈希表键;
message是一个字符串键;
引用《Redis设计与实现》