黑马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()中尝试做内存淘汰
在这里插入图片描述


  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis是一种基于内存的高性能键值存储系统。它以其快速的读写能力和丰富的数据结构而闻名,被广泛应用于缓存、队列、计数器等场景。 Redis的核心原理包括以下几个方面: 1. 内存存储:Redis将数据存储在内存中,以实现低延迟的读写操作。它使用了一种叫做"跳表"(Skip List)的数据结构来实现有序集合和有序哈希表,以及哈希表和字符串等其他数据结构。 2. 持久化:Redis支持两种持久化方式,分别是RDB(Redis Database)和AOF(Append-Only File)。RDB是一种快照方式,将内存中的数据定期保存到磁盘上;AOF则是将写命令追加到一个日志文件中,通过重新执行这些命令来恢复数据。 3. 复制:Redis支持主从复制机制,在一个Redis服务器上配置一个或多个从服务器,从服务器会自动复制主服务器上的数据。主从复制可以提高系统的可用性和读取性能。 4. 高可用:Redis提供了哨兵(Sentinel)和集群(Cluster)两种方式来实现高可用。哨兵监控主服务器的状态,并在主服务器失效时自动将一个从服务器升级为主服务器;集群则将数据分散到多个节点上,每个节点负责一部分数据。 5. 事务:Redis支持简单的事务操作,通过MULTI、EXEC、WATCH和UNWATCH等命令来实现。事务中的命令在执行EXEC命令时原子地被提交,保证了相关操作的一致性。 这些是Redis的一些核心原理,它们共同构成了Redis的高性能和可靠性。当然,Redis还有很多其他的特性和功能,比如发布订阅、Lua脚本等,可以根据具体需求进行使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值