黑马Redis原理篇


1、数据结构

1.1、动态字符串SDS

Redis是基于C语言实现的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2、IntSet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3、Dict

在这里插入图片描述在这里插入图片描述在这里插入图片描述渐近式rehash:
在这里插入图片描述在这里插入图片描述

1.4、ZipList

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

1.5、QuickList

在这里插入图片描述在这里插入图片描述

1.6、SkipList

在这里插入图片描述在这里插入图片描述

1.7、RedisObject

在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.8、五种数据结构

1. String(小EMBSTR,大RAW (SDS),少量整数INT)

在这里插入图片描述在这里插入图片描述

2. List(Redis3.2之后使用QuickList实现)

在这里插入图片描述

3. Set(少量整数IntSet,正常采用Dict,元素存在key中,value为null)

在这里插入图片描述

4. ZSet(少量数据使用ZipList,使用Dict和SkipList)

在这里插入图片描述在这里插入图片描述

5. Hash(少量数据ZipList,大量数据Dict)

在这里插入图片描述


2、网络模型

2.1、用户空间和内核空间

在这里插入图片描述在这里插入图片描述

2.2、阻塞IO

在这里插入图片描述

2.3、非阻塞IO

在这里插入图片描述

2.4、IO多路复用

2.4.1 Linux中的I/O多路复用

图片
在这里插入图片描述
在这里插入图片描述

2.4.1 epoll中的事件通知机制

在这里插入图片描述
在这里插入图片描述

2.5、信号驱动IO

在这里插入图片描述

2.6、异步IO

在这里插入图片描述

IO操作同步异步总结(重要)

在这里插入图片描述

2.7、Redis网络模型(I/O多路复用+事件派发)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


3、通信协议

3.1、RESP协议

在这里插入图片描述
在这里插入图片描述


4、内存策略

4.1、过期策略

在这里插入图片描述
Redis 通过一个叫做过期字典(可以看作是 hash 表)来保存数据过期的时间。

惰性删除:不是在TTL到期后就立刻删除,而是在访问一个key的时候,检查该key的存活时间,如果已经过期才执行删除。这样对 CPU 最友好,但是可能会造成太多过期 key 没有被删除。
定期删除:每隔一段时间抽取一批 key 执行删除过期 key 操作。并且,Redis 底层会通过限制删除操作执行的时长和频率来减少删除操作对 CPU 时间的影响。

定期删除的两种模式:

  1. SLOW模式执行频率默认为10,每次不超过25ms
  2. FAST模式执行频率不固定,但两次间隔不低于2ms,每次耗时不超过1ms
    在这里插入图片描述

4.2、淘汰策略

内存淘汰:就是当Redis内存使用达到设置的上限时,主动挑选部分key删除以释放更多内存的流程。Redis会在处理客户端命令的方法processCommand()中尝试做内存淘汰
在这里插入图片描述


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值