当前位置: 首页 > 网络应用技术

一篇文章了解Redis高级数据结构

时间:2023-03-05 21:57:18 网络应用技术

  定义

  补充使用C的位域来节省内存,并且易于操作

  在移植的情况下,有必要填充适当的字节填充

  获得时间的功能是系统调用,它更多地消耗资源

  REDIS在缓存中定期更新。

  更新后,其他线程可以使用lruclock中的原子量,例如群集状态

  定义分为三种类型

  补充tryObjectEncoding

  EMBSTR1。仅分配记忆空间一次,因此Robj和SD是连续的。2.仅阅读;3. EMBSTR字符串需要修改速度1.重新分配涉及ROBJ和SDS的整个对象。所以

  应用程序方案仅是一种类型的QuickList,这是一个两条链接列表

  定义

  当List's Len = 1时,优势分析将退化为Ziplist。如果找到较大的连续内存,则将是OOM。当ziplist = 1时,它将退化为两个链接列表,这对内存不友好。选择字段填充

  16位,用于存储列表 - max-ziplist size size参数的值,默认-2

  如果-2表示8K的Ziplist能力

  如果是正值,则表示Ziplist在每个QuickList上的进入数量

  16位数字,指示节点的深度设置,存储 - 压缩 - 默认值

  当有很多数据时,最容易访问的是两端。清单提供压缩中间数据节点(节点级别)以保存内存空间的选项

  Em

  暂时分配连接,然后在一定时间压缩它以减少压缩减压时间

  当不存在特征时,BLPOP或BRPOP命令将被阻止并连接。当另一个客户执行这些密钥执行时,将取消BLOP和BRPOP的阻止。

  它正在判断超时或数据,否则不会返回

  应用程序方案

  权衡连续记忆和不连续记忆的优点和缺点,并使用Ziplist和DICD数据结构存储

  当Ziplist的进入数量大于512时,或值的值的值

  应用程序方案

  还使用两种方法存储

  如果非正式的数量超过512或未比例收集对象,则将转换为dict

  应用程序方案

  更复杂的是单独定义单个结构

  还有两个底层:Ziplist和Skiplist

  ziplist当入口数量超过238时或值字节值的值大于64,并且将转换为Skiplist

  一种插入排序

  如果大于得分,将插入。如果相等,请比较元素。如果它很大,请将其插入前面

  转变

  为什么Skiplist会创建DICE

  促进

  当您需要获得特定元素的分数时,kiplist查询的时间复杂性为o(lgn),字典时间复杂性为o(1)

  当底层是Ziplist时,时间复杂性为O(n)

  应用程序方案

  字符串缓存;计算机简单类型。类似于set stunum studentInfo。计数器,例如当前(列表)lpush+lpop = stack = stack(stack)lpush+rpop = queue(queue(queue)lpush+ltrim = ltrim = guapped collection(limited Collection)lpush+brpop = lpush+brpop = =消息队列(消息队列)哈希(哈希)对象属性(尤其是不规则),例如Cache studentInfo,Hmset Stunum Stunum 1 Stuname dinghaha age 18 Episotes(set)适用的社交场景赞美/步骤/步骤(set)排名;优先队列;与缓存相关的元数据(例如根据排序挑战)

  参考:

  “重新设计和实施”

  硬式教室

  REDIS源代码分析(2)

  原始:https://juejin.cn/post/7100203189920038943