Redis-单个数据库结构---过期键

第一节:单个Redis服务器结构

这里写图片描述

一个Redis默认有16个数据库,server结构维护数据库,client维护与外部的链接,打开命令客户端,就是一个client
再看单个数据库的结构:
这里写图片描述
一个数据库,用字典的方式,把所有的字符串键做key,value就是这条数据的内容,内容可以是字符串对象,链表对象,哈希对象,集合对象,有序集合对象

整个结构叫 键空间

第二节:读写一个键时,Redis在做什么

1、键空间,记录命中数
2、记录单个键的最后访问时间
3、删除过期键
3、修改数据会标记dity
4、针对被watch的key,进行通知到client
这里写图片描述

第三节:过期键

1、过期时间是怎么保存的

当我们为一个键设置了过期键,那么时间是独立保存在redis_server里面的也是用一个字典来保存
这里写图片描述

2、删除过期键的策略

1、定时器删除:为过期键设置定时器,到时间点,触发定时器,删除键
2、定期删除:轮训,每隔一段时间轮询,检验过期就删除
在 Redis 2.6 版本中, 程序规定 serverCron 每秒运行 10 次, 平均每 100 毫秒运行一次。 从 Redis 2.8 开始, 用户可以通过修改 hz选项来调整 serverCron 的每秒执行次数,
3、懒删除:client命令来了后,就检查,过期就删除
Redis采用定期删除和懒删除这两种方案,定时器浪费内存浪费CPU

3、磁盘化时,过期键怎么办

A、RDB(直接记录键空间,记录键的所有属性),相当于内存对象的拷贝
1、导出RDB过程:(定时给内存照相)
leader:过期不写入,未过期写入
follower : 过期不写入,未过期写入

2、导入RDB过程:(机器重启)
leader:过期不写入,未过期写入
follower : 不管过不过期,都要写入,但是在leader同步的过程,会清空follower的数据

B、AOF(命令模式,有变动,则追加命令)
1、导出AOF:
不涉及,删除命令来的时候回追加delete命令

2、导入AOF:
leader和follower都执行,过期的话,如果有写的命令,过期不写,未过期才写

4、leader定时同步数据到follower时,过期键处理

leader:发现过期,会删除,然后发送一个delete命令给follower
follower:不管过不过期,没有leader的删除命令,这个键就不会因为过期而被删除

第四节:通知watch

键空间通知:通知某个键做了什么命令
键事件通知:某个命令,被哪些键执行过
这里写图片描述

归纳下:
1、Redis数据库,就是用数组来表示数据库,每个数据库的内容,就是一个字典,一个key,一个value,value就是5大对象
2、过期时间,用的另外一个字典维护的
3、过期键在leader里面,过期是不会被导出,如果导入的时候过期了,leader会删除,follower不会
4、follower不会轻易删除一个过期键,由leader通过命令来控制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值