Redis(五)--- Redis的持久化RDB与AOF
一、Redis数据库我们都知道Redis是基于内存的数据库,数据是以key-value键值对的方式存储的,那么key-value键值对是随意放在内存中的么,其实Redis的服务会创建很多的数据库空间,这些key-value键值对都是在各个数据库空间中存储的。当我们使用客户端工具链接Redis服务时,会在客户端中看到一系列的db*命名的项(如图),这些就是一个个数据库,Redis初始化创建16个数据
一、Redis数据库
我们都知道Redis是基于内存的数据库,数据是以key-value键值对的方式存储的,那么key-value键值对是随意放在内存中的么,其实Redis的服务会创建很多的数据库空间,这些key-value键值对都是在各个数据库空间中存储的。
当我们使用客户端工具链接Redis服务时,会在客户端中看到一系列的db*命名的项(如图),这些就是一个个数据库,Redis初始化创建16个数据库,数据库创建个数可以在配置文件中修改。

而在命令行模式中是看不到这些数据库的具体数量的,但在命令行提示符的右侧会提示我们当前处于哪个数据库(如图),并且可以用上一章说到的SELECT命令进行数据库的切换;客户端默认连接第一个数据库,即0号数据库。

(1)数据库键空间
key-value键值对存储在各个数据库中,而每个数据库内部都是由一个redisDb结构,结构中有若干个属性,最主要的有两个属性dict、expires。
typedef struct redisDb {
// ...
// 数据库键空间,保存着数据库中的所有键值对
dict *dict;
// 过期字典,保存着键的过期时间
dict *expires;
// ...
} redisDb;dict 是字典结构,存储我们的key-value键值对,这个字典称为数据库键空间,字典的键就是数据库的键,每个键都是一个字符串,存储key值;字典的值就是数据库的值,每个值都可以是五大对象中任意一种,存储value值;所以我们存储的key-value最终是在数据库中以字典的结构存储的。
expires 同样是字典结构,但其存储的是key-value过期时间;当我们设置了key-value的过期时间,那么key-value存储在dict字典中,而过期时间则存储在expires中;字典的键存储key,字典的值存储过期时间;这里需要注意的是,无论设置的
原创不易,完成人机校验,阅读全文