redis列表若干记录
2、列表
- ziplist
- ziplist参数

- entry结构
- entry-data:节点存储的元素
- prelen:记录前驱节点长度
- encoding:当前节点编码格式
- encoding
- encoding属性 使用多个子节点存储节点元素长度,这种多字节数据存储在计算机内存中或者进行网络传输的时的字节顺序称为字节序。
- 大端字节序:低字节数据保存在内存高地址位置,高字节数据保存在内存低地址位置。
- 小端字节序:低字节数据保存在内存低地址位置,高字节数据保存在内存高地址位置。
- CPU处理指令通常按照内存地址增长方向执行的。若使用小端字节序,cpu执行效率会更高。而ziplist就采用小端字节序,所以它有CPU执行优势。
- encoding属性 使用多个子节点存储节点元素长度,这种多字节数据存储在计算机内存中或者进行网络传输的时的字节顺序称为字节序。
- ziplist查找元素
- 从某个节点开始查找,计算当前节点属性(encoding、lensize、len)
- 如果当前节点时字符串编码,则对比传入的内容,有则返回
- 如果节点元素是数值编码,并且还没对查找内容进行编码,则先编码再对比(不需要比对encoding了)
- 对比结束不符合就跳转到下一个节点继续比对
- ziplist插入元素
- 计算前驱节点长度并放入prelen中
- 对插入元素进行内容编码,计算编码后的长度(req)
- 计算prelen长度
- 计算后驱节点长度(nextdiff)
- 重新为ziplist分配内存(当前长度+req+nextdiff)
- 将插入位置后面所有的节点后移
- 修改后驱节点的prelen属性
- 更新zltail属性
- 更新zllen属性
- ziplist级联更新(极端情况)
- 会涉及大量的内存拷贝,所以这个时候应该采用quicklist
- ziplist参数
- quicklit
- quicklist通过将一个ziplist拆分为多个短的ziplist,避免插入或删除元素时候导致大量的内存拷贝。
- 当链表很长的时候,中间节点访问效率较低时,redis会对中间节点进行压缩节省内存空间。
- 将元素插入quicklist头部
- 判断头节点的ziplist是否已满,未满则直接插入
- 若已满则创建新的节点,将元素插入新节点的ziplist中
ziplist结构紧凑,使用一整块内存存储链表的所有数据,其只有一种编码格式OBJ_ENCODING_QUICKLIST
相关文章:
redis列表若干记录
2、列表 ziplist ziplist参数 entry结构 entry-data:节点存储的元素prelen:记录前驱节点长度encoding:当前节点编码格式encoding encoding属性 使用多个子节点存储节点元素长度,这种多字节数据存储在计算机内存中或者进行网络传输的时的字节…...
固态硬盘用mbr还是GPT?固态硬盘分区类型用mbr还是GPT分析
固态硬盘用mbr还是GPT?答:固态硬盘分区类型用mbr还是gpt其实取决于你对分区要求及引导模式。我们知道现在的引导模式有uefi和legacy两种引导模式,如果采用的是uefi引导模式,分区类型对应的就是gpt分区(guid),如果引导模…...
http/sse/websocket 三大协议演化历史以及 sse协议下 node.js express 服务实现打字机案例 负载均衡下的广播实现机制
背景 自从2022年底chatgpt上线后,sse就进入了大众的视野,之前是谁知道这玩意是什么?但是打字机的效果看起来是真的很不错,一度吸引了很多人的趋之若鹜,当然了这个东西的确挺好用,而且实现很简单࿰…...
智能时代新宠:2024年录音转文字软件
无论是学生群体记录课堂笔记,职场人士整理会议纪要,还是自媒体创作者捕捉灵感火花,录音转文字软件都以其独特的便利性和高效性赢得了广泛的好评。今天,就让我们一起探索那些深受大家喜爱的录音转文字工具吧。 1.365在线转文字 链…...
【Python机器学习】树回归——使用Python的tkinter库创建GUI
机器学习给我们提供了一些强大的工具,能从未知数据中抽取出有用的信息。因此,能否这些信息以易于人们理解的方式呈现十分重要。如果人们可以直接与算法和数据交互,将可以比较轻松的进行解释。其中一个能够同时支持数据呈现和用户交互的方式就…...
谷歌浏览器网页底图设置为全黑
输入网址:chrome://flags/ 搜索dark,选择Enabled,重启浏览器即可...
Unity | AmplifyShaderEditor插件基础(第二集:模版说明)
目录 一、前言 二、核心模版和URP模版 1.区别介绍 2.自己的模版 三、输出节点 1.界面 2.打开OutPut 3.ShderType 4.ShaderName 5.Shader大块内容 6.修改内容 四、预告 一、前言 内容全部基于以下链接基础以上讲的。 Unity | Shader基础知识(什么是shader…...
【Linux入门】Linux常见指令
目录 前言 一、Linux基本指令 1.ls指令 2.pwd命令 3.cd 指令 4.touch指令 5.mkdir指令 6.rmdir指令 && rm 指令 7.man指令 8.cp指令 9.mv指令 10.cat 11.date 12.top 13.shutdown-关机 14.重要的几个热键 二、Linux扩展指令 总结 前言 Linux指令是在…...
startData
某音startData 记得加入学习群: python爬虫&js逆向3 714283180...
CV每日论文--2024.7.24
1 、AutoAD-Zero: A Training-Free Framework for Zero-Shot Audio Description 中文标题:T2V-CompBench:组合文本到视频生成的综合基准AutoAD-Zero:零样本音频描述的免训练框架 简介:我们的目标是以无需训练的方式为电影和电视剧…...
大语言模型的简易可扩展增量预训练策略
前言 原论文:Simple and Scalable Strategies to Continually Pre-train Large Language Models翻译文件已整理至Github项目Some-Paper-CN,欢迎大家Star! 摘要 大语言模型(LLMs)通常需要在数十亿个tokens上进行预训…...
python学习之异常
在编程中,异常是指程序运行时发生的错误或异常情况,它们可能会打断程序的正常流程。不同的编程语言定义了自己的一套异常类型。在Python中,异常是基于类和对象的,所有的异常都继承自内置的BaseException类。 以下是Python中一些常…...
多张图像实现全景无痕拼接操作
目录 编辑 1,图像拼接的作用 2,实现步骤 3,效果展示 1,图像拼接的作用 视觉扩展:通过拼接,可以将多个视角的图像合并,创造出比单张图片更广阔的视野。 数据整合:在科学研究和地…...
在阿里云ecs上构建一个WordPress博客网站
1、购买ECS 使用抢占式实例,RDS 使用按量付费 2、在安全组的出入方向添加80端口 3、购买一个公网IP绑定该ecs 4、云数据库rds选择按量付费 5、创建一个名为test_user的普通账号 6、创建数据库 7、设置RDS实例白名单 8、远程登录ecs实例 9、安装apache服务及其扩展包…...
安卓应用开发学习:查看手机传感器信息
一、引言 在手机app的开发中经常会用到手机的传感器,在《Android App 开发进阶与项目实战》一书的第10章就介绍了传感器的一些功能和用法。要想使用传感器,首先得知道手机具备哪些传感器。书中有传感器类型取值的说明,并提供了一个查看手机传…...
C语言字符串缺陷
目录 补缺: 正题开始: 思考: 解决方案: 1.string类 2.redis库 简介: 对于处理字符串的好处: 下期预告:内容待定 补缺: 在上期内容的结尾我留下了一个问题,这个问…...
分布式场景中的常见的技术问题及解决,如分布式锁、分布式事务、分布式 session、分布式任务调度
目录 一、分布式锁 二、分布式事务 三、分布式Session 四、分布式任务调度 在分布式场景中,常见的技术问题及其解决方案涉及多个方面,包括分布式锁、分布式事务、分布式session和分布式任务调度。以下是对这些问题的详细探讨: 一、分布式…...
Android笔试面试题AI答之Kotlin(9)
文章目录 39.Kotlin中List与MutableList的区别?ListMutableList使用场景示例 40. Kotlin中实现单例的几种常见方式?1. 懒汉式(线程不安全)2. 懒汉式(线程安全)3. 饿汉式4. 双重校验锁(DCL, Doub…...
C# 不一样的洗牌算法---Simd指令
洗牌算法,以随机打乱数组中元素的位置 测试数据创建 int[] _data; Random rng new Random(); protected override void CreateData() {_data new int[_size];for (int i 0; i < _data.Length; i){_data[i] i;} } 普通打乱数组元素位置 protected overrid…...
LVGL系列3--纯物理(外部)按键,数字键盘控制控件
LVGL系列 一、LVGL移植 LVGL系列1–AT32移植LVGL_V8具体步骤 LVGL系列2–linux lvglv8 vscode 移植 LVGL系列3–纯物理(外部)按键,数字键盘控制控件 文章目录 LVGL系列一、LVGL移植 一、背景方式一:自定义事件发送与处理函数方式二:利用l…...
AI Agent在智能风控中的实战:多智能体欺诈检测与预警
AI Agent在智能风控中的实战:多智能体欺诈检测与预警 你有没有过明明是正常交易却被银行冻结账户的糟糕体验?或是听说过某电商平台上线新活动首日就被黑产团伙薅走数千万补贴的新闻?随着黑产欺诈向团伙化、专业化、动态化演进,传统依赖规则引擎、单模型机器学习的风控体系已…...
Unity安卓构建72小时实战指南:从零到真机运行
1. 这不是“又一本Unity教程”,而是我带三个新人从零上线第一款安卓游戏的真实路径你点开这个标题,大概率正站在两个路口之间:一边是满屏“30天速成Unity”“零基础做爆款”的短视频封面,一边是你刚下载完Unity Hub、卡在Android …...
Kerberos身份认证原理与实战排错指南
1. 为什么今天还要花时间搞懂 Kerberos?——一个被低估的“老协议”正在悄悄支撑着你的日常你每天登录公司内网查邮件、访问财务系统提交报销、用 Jenkins 构建代码、甚至在 Windows 域环境中打开一台同事的共享文件夹……这些看似顺滑的操作背后,大概率…...
新手也能懂的SSRF漏洞实战:用iwebsec靶场复现文件读取与内网探测
从零开始掌握SSRF漏洞:iwebsec靶场实战指南1. 认识SSRF漏洞的本质想象一下,你正在一家高档餐厅点餐,服务员承诺可以帮你从任何地方获取食材——包括隔壁竞争对手的厨房。SSRF(Server-Side Request Forgery)漏洞就像这个…...
③ AI副业第一步:如何找到适合自己的AI赚钱赛道
③ AI副业第一步:如何找到适合自己的AI赚钱赛道选对赛道,努力才有意义。选错赛道,越努力离钱越远。前言:为什么大多数人AI副业做不起来? 我观察了100想做AI副业的人,失败的原因高度一致: 失败路…...
从Gamma函数到泊松分布:一个概率论中的含参量积分实用案例解析
Gamma函数与泊松分布:概率论中的数学之美 在数据科学和机器学习的实践中,概率分布构成了建模的基石。当我们深入探究这些分布背后的数学原理时,Gamma函数以其优雅的性质和广泛的应用脱颖而出。它不仅连接了离散与连续概率世界,更在…...
如何快速掌握开源UE资产编辑器:UAssetGUI完整配置与实战指南
如何快速掌握开源UE资产编辑器:UAssetGUI完整配置与实战指南 【免费下载链接】UAssetGUI A tool designed for low-level examination and modification of Unreal Engine game assets by hand. 项目地址: https://gitcode.com/gh_mirrors/ua/UAssetGUI UAss…...
3步深度解锁:网络设备权限管理工具的实战手册
3步深度解锁:网络设备权限管理工具的实战手册 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 你是否曾面对功能受限的网络设备感到束手无策?当默认配置锁死了硬…...
第三卷第4章:原型模式设计思想
第三卷第4章:原型模式设计思想 目录介绍 01.案例引入与思考 1.1 痛点场景 1.2 它哪里不舒服 1.3 引出本篇主角 02.原型模式介绍 2.1 原型模式由来 2.2 原型模式定义...
基于PIC32的嵌入式MIDI合成器:从波表合成到硬件实现
1. 项目概述:一个基于嵌入式微控制器的MIDI声音合成器如果你对电子音乐制作、嵌入式开发,或者DIY硬件合成器感兴趣,那么“REMI Synth”这个项目绝对值得你花时间深入了解。它本质上是一个数字单音MIDI控制的声音合成器,核心是一块…...
