《Redis设计与实现》读书笔记-第二部分:单机数据库的实现-1:数据库

目录

1.数据库​

1.1服务器中的数据库

 1.3数据库键空间

1.3.1添加新键

1.3.2删除键

1.3.3更新键

1.3.4对键取值

1.3.5其他键空间操作

1.3.6读写键空间时的维护操作 

 1.4设置键的生存空间或过期空间

 1.4.1设置过期时间

1.4.2保存过期时间 

1.4.3移除过期时间

1.4.4计算并返回剩余生存时间 

 1.4.5过期键的判定

 1.5过期键的删除策略

1.5.1定时删除

 1.5.2惰性删除

 1.5.3定期删除​

1.6Redis的过期键删除策略

1.6.1惰性删除策略的实现​

1.6.2定期删除策略的实现

1.7AOF、RDB和复制功能对过期键的处理

1.7.1生成RDB文件 ​

1.7.2载入RDB文件 ​

1.7.3AOF文件写入

1.7.4AOF重写​

1.7.5复制​

1.8数据库通知

1.8.1发送通知​

 1.8.2发送通知的实现


1.数据库

 

1.1服务器中的数据库

redis服务器将所有的数据库都保存在redisserver结构的db数组中。db数组的每一个项都是一个redisDb结构,每个结构代表一个数据库1.2切换数据库

默认情况下redis哭护短的目标数据库为0号数据库,但客户端可以通过执行SELECT命令来切换目标数据库。

在服务器内部,客户端状态redisclient结构的db记录的是客户端当前的目标数据库,这个db是一个指向redisDb的指针。(redisDb是个数组,里面放的就是数据库)

 通过修改redisClient.db指针来实现切换数据库的功能。

 1.3数据库键空间

服务器中的每个数据库都由一个redisDb结构表示,其中redisDb结构中的dict字典保存了数据库中所有的键值对:

数据库的键空间是个字典,所以所有针对数据库的操作都是通过对键空间字典进行操作实现的。

1.3.1添加新键

添加一个新键值对到数据库,实际上就是将一个新键值对添加到键空间字典里,其中键为字符串对象,而值这位任意一种类型的redis对象。

1.3.2删除键

删除数据库中的一个键,实际上就是在键空间里面删除键所对应的键值对对象。

1.3.3更新键

对一个数据库键进行更新,实际上就是对键空间里面键所对应的值对象进行更新,更新值对象类型不同,具体方法也会不同

1.3.4对键取值

对一个数据库键进行取值,实际上就是在键空间中取出所对应的值对象,根据值对象的类型不同,具体方法也会不同。

1.3.5其他键空间操作

1.3.6读写键空间时的维护操作 

 

 1.4设置键的生存空间或过期空间

服务器会自动删除生存时间为0的键,而用户可以为键设置生存时间:

 

 

 1.4.1设置过期时间

 

1.4.2保存过期时间 

 

 

1.4.3移除过期时间

1.4.4计算并返回剩余生存时间 

 1.4.5过期键的判定

 

 1.5过期键的删除策略

1.5.1定时删除

 

 1.5.2惰性删除

 1.5.3定期删除

1.6Redis的过期键删除策略

redis服务器实际使用的是定期删除和惰性删除两种策略:合理使用CPU时间和避免内存空间浪费之间取得平衡。

1.6.1惰性删除策略的实现

1.6.2定期删除策略的实现

 activeExpireCycle函数工作模式:

1.7AOF、RDB和复制功能对过期键的处理

1.7.1生成RDB文件 

1.7.2载入RDB文件 

1.7.3AOF文件写入

1.7.4AOF重写

1.7.5复制

 

1.8数据库通知

 这个功能可以让客户端通过订阅给定的频道或者模式,莱霍智数据库中键的变化,以及数据库中命令的执行情况。

1.8.1发送通知

 1.8.2发送通知的实现

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值