redis数据库服务器的实现,键值对的保存方式、添加、删除、查看、更新操作的实现。

服务器中的数据库

服务器数据库示例

select 1切换数据库时从db0指向db1

数据库键空间

redisDB姐哦股的dict字典中保存了数据库中的所有键值对,统称键空间

  • 键空间的键也就是数据库的键,每个键都是一个字符串对象
  • 键空间的值也就是数据库的值,每个值可以是五种类型的任意一种redis对象

数据库键空间示例

对键的增删改查都是在该字典上面操作。

设置键的生存时间或过期时间

设置过期时间,有四个命令可用于设置生存时间

  • EXPIRE key seconds
  • PEXPIRE key milliseconds
  • EXPIREAT key timestamp
  • PEXPIREAT key milliseconds-timestamp(上面三个命令的内部实现均用此命令)

persist 命令可以移除一个键的过期时间。

过期键删除策略:

  • 定时删除
  • 惰性删除
  • 定期删除

redis服务器实际使用惰性删除和定期删除。

带有过期字典的数据库示例

主从模式下,从数据库不会键过期也不会删除,等待主数据库的del命令到来。

更多源码注释说明见https://github.com/dalaizhao/redis/tree/feature_code_comment