redis列表若干记录

2、列表

  1. ziplist
    1. ziplist参数
      数据表格
    2. entry结构
      1. entry-data:节点存储的元素
      2. prelen:记录前驱节点长度
      3. encoding:当前节点编码格式
      4. encoding
        1. encoding属性 使用多个子节点存储节点元素长度,这种多字节数据存储在计算机内存中或者进行网络传输的时的字节顺序称为字节序。
          1. 大端字节序:低字节数据保存在内存高地址位置,高字节数据保存在内存低地址位置。
          2. 小端字节序:低字节数据保存在内存低地址位置,高字节数据保存在内存高地址位置。
          3. CPU处理指令通常按照内存地址增长方向执行的。若使用小端字节序,cpu执行效率会更高。而ziplist就采用小端字节序,所以它有CPU执行优势
    3. ziplist查找元素
      1. 从某个节点开始查找,计算当前节点属性(encoding、lensize、len)
      2. 如果当前节点时字符串编码,则对比传入的内容,有则返回
      3. 如果节点元素是数值编码,并且还没对查找内容进行编码,则先编码再对比(不需要比对encoding了)
      4. 对比结束不符合就跳转到下一个节点继续比对
    4. ziplist插入元素
      1. 计算前驱节点长度并放入prelen中
      2. 对插入元素进行内容编码,计算编码后的长度(req)
      3. 计算prelen长度
      4. 计算后驱节点长度(nextdiff)
      5. 重新为ziplist分配内存(当前长度+req+nextdiff
      6. 将插入位置后面所有的节点后移
      7. 修改后驱节点的prelen属性
      8. 更新zltail属性
      9. 更新zllen属性
    5. ziplist级联更新(极端情况)
      1. 会涉及大量的内存拷贝,所以这个时候应该采用quicklist
  2. quicklit
    1. quicklist通过将一个ziplist拆分为多个短的ziplist,避免插入或删除元素时候导致大量的内存拷贝。
    2. 当链表很长的时候,中间节点访问效率较低时,redis会对中间节点进行压缩节省内存空间。
    3. 将元素插入quicklist头部
      1. 判断头节点的ziplist是否已满,未满则直接插入
      2. 若已满则创建新的节点,将元素插入新节点的ziplist中

ziplist结构紧凑,使用一整块内存存储链表的所有数据,其只有一种编码格式OBJ_ENCODING_QUICKLIST

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/51943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小型超声波清洗机哪个品牌好用?小型超声波清洗机排名前四

第一次见识到超声波清洗机的神奇是在几年前,当时我去眼镜店配眼镜。等待的过程中,店员把旧的眼镜拿去清洁了,30秒,我就看到了到小污渍和油污被震出来了,感觉特别神奇。几分钟后,清洁完毕,擦干镜…

3个常用zip压缩包文件打来密码删除方法

ZIP压缩包作为一种广泛使用的文件压缩格式,常常用于节省存储空间或便于文件传输。一般情况下为保护文件数据的安全我们会给zip压缩文件设置密码安全保护,但如果后续不需要密码保护了,如何删除密码呢?下面小编给大家介绍三种常用的…

java 函数接口Consumer简介与示例【函数式编程】【Stream】

Java 8 中的 消费者接口Consumer 是一个函数接口,它可以接受一个泛型 类型参数,它属于java.util.function包。 accept(T) 方法:是 Consumer 函数式接口的方法,传入单个输入参数,无返回值,可以用于 Lambda 表…

电脑监控软件有哪些,哪款更好用?一网打尽!电脑监控软件大搜罗,总有一款适合你!

甲:哎,您听说了吗?这年头,电脑监控软件那是五花八门,跟变戏法似的! 乙:哦?怎么个五花八门法? 甲:嘿,您还别说,从实时监控到网络追踪…

最佳实践:敏捷需求管理——如何写好用户故事丨IDCF

丁仿,圣略咨询首席敏捷教练,研发效能(DevOps)工程师(中级)课程学员 在敏捷项目管理中,用户故事(User Stories)是需求管理的核心工具。本篇文章将从用户故事的基本概念、编…

复习之 java 锁

裁员在家,没有面试机会,整理整理面试知识点吧! 不得不知道的java 锁 Java 中,提供了两种方式来实现同步互斥访问(也就是锁):synchronized 和 Lock 多线程编程中,有可能会出现多个线…

期权中非常重要的行权!不懂行权先别交易!

今天带你了解期权中非常重要的行权!不懂行权先别交易!期权是金融市场中一种常见的衍生品工具,它给予持有者在特定时间内以特定价格购买或出售某个资产的权利。而“行权”是指期权持有者行使期权权利的行为。 期权行权是指期权持有者选择执行…

超网和无类间路由是什么?

​一、超网概述 超网是将多个连续的网络地址组合成一个增加的网络地址的技术。常用于减少路由器的路由表大小,网络的可扩展性。通过合并连续的子网,超网可以减少路由入侵的数量,从而提高网络的效率。 超网的实现基于合并多个具有连续IP地址…

java知识点详解——异常

当输入的数不是整数时 会报错 当输入的被除数为0时 会报错 在以前我们会使用if—else语句用来堵住漏洞,但是那样相当繁琐,很难穷举所有错误 Scanner in new Scanner(System.in); System.out.print("请输入被除数:"); int num1 in.nextInt(…

【Python快速入门和实践016】Python常用脚本-对视频抽取指定帧数并保存

一、功能介绍 这段代码的功能是从一个视频文件中抽取指定数量的帧,并将这些帧保存为图像文件。步骤如下: 设置路径和参数: video_path:视频文件的路径。image_folder:保存抽取图像的目录。num_frames_to_extract&#…

工业相机图像采集卡

什么是图像采集卡? 图像采集卡又称为图像卡,它将相机的图像视频信号,以帧为单位传送到计算机的内存和VGA帧存,供计算机处理,存储,显示和传输等使用。在机器视觉系统中,图像采集卡采集到的图像供…

【C语言】双链表

🦄个人主页:小米里的大麦-CSDN博客 🎏所属专栏:C语言数据结构_小米里的大麦的博客-CSDN博客 🎁代码托管:黄灿灿/数据结构 (gitee.com) ⚙️操作环境:Visual Studio 2022 目录 一、什么是双链表? 二、双链表温习 1. 双链表的结构…

【Django开发】前后端分离django美多商城项目第2篇:展示用户注册页面,1. 创建用户模块子应用【附代码文档】

全套笔记资料代码移步: 前往gitee仓库查看 感兴趣的小伙伴可以自取哦~ 本教程的知识点为: 项目准备 项目准备 配置 1. 修改settings/dev.py 文件中的路径信息 2. INSTALLED_APPS 3. 数据库 用户部分 图片 1. 后端接口设计: 视图原型 2. 具体…

如何诱导AI犯罪-提示词注入

我们用到的大模型基本把政治类信息、犯罪相关信息都已屏蔽。但是,黑客依旧可以使用提示词诱导和提示词注入的方式对大模型进行攻击。 1、提示词诱导 如果直接让AI提供犯罪过程,AI会直接拒绝。虽然AI对于大部分知识了然于心,但因为经过了人工…

javase综合案例3 -- 通讯录

文章目录 一,项目要求基础功能拓展 二,导入jar包 pinyin4j.jar三,程序报下建立Pinyin4j类四,创建实体类Contact五,创建通讯录接口ContactDao六,创建ContactDao接口的视线子类ContactDaoImpl6.1 创建全局的M…

【Dash】Dash模块介绍

什么是Dash? Dash 是一个开源的 Python 框架,用于创建基于 Web 的应用程序。它由 Plotly 公司开发,专为数据科学家和分析师设计,以便他们可以构建自定义的数据可视化 Web 应用程序,而无需具备前端开发知识。Dash 提供…

NGINX项目实战

一、nginx四层代理 部署支持4层TCP/UDP代理的Nginx服务器 部署nginx服务器 编译安装必须要使用--with-stream参数开启4层代理模块。 [rootproxy ~]# rm -rf /usr/local/nginx/ #清理环境 [rootproxy nginx-1.16.1]# ./configure --with-http_ssl_module --with-stream #开…

Oracle特有的DECODE函数

Oracle中的DECODE函数是一种条件表达式函数,用于基于给定的条件从一组值中选择一个值返回。它的基本语法如下: DECODE(expression, search1, result1, [search2, result2, ...], [default])expression:要比较的表达式或列。searchN&#xff…

DDPM 核心代码解析(1)

所有代码 已上传至GitHub - duhanyue349/diffusion_model_learned_ddpm_main: 扩散模型基础框架源代码 目录结构如下 在train_cifar.py 中展示了扩散模型训练的所有代码 如果没有安装wandb 可以在create_argparser()设置 log_to_wandbFalse 一、加载模型参数 args 这里用了一…

直播圈不再只讲技术和千川,管理成为新焦点

直播圈不讲技术,也不讲千川啦,开始讲管理啦,感叹直播带货发展真快,都说要傻瓜化,讲的东西一年能迭代 3 个版本,甚至带货线下课不讲半天团队管理你的课都显得low。关键没一个能告诉你管理是什么管什么&#…