redis-数据库原理
Contents
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