Redisbook学习笔记(2)内存映射数据结构(1)压缩列表

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

Ziplist 是由一系列特殊编码的内存块构成的列表,一个ziplist 可以包含多个节点(entry),每

个节点可以保存一个长度受限的字符数组(不以\0 结尾的char 数组)或者整数,包括:

字符数组

– 长度小于等于63 (26 1)字节的字符数组

– 长度小于等于16383 (214 1)字节的字符数组

– 长度小于等于4294967295 (232 1)字节的字符数组

整数

– 4 位长,介于0 至12 之间的无符号整数

– 1 字节长,有符号整数

– 3 字节长,有符号整数

– int16_t 类型整数

– int32_t 类型整数

– int64_t 类型整数

因为ziplist 节约内存的性质,它被哈希键、列表键和有序集合键作为初始化的底层实现来使

ziplist 的构成

wKiom1L3NyDQJjR8AADlJ6QNttg129.jpg

wKioL1L3N4mzGe1lAARLB_KiIg0575.jpg


wKiom1L3N2ziBKoGAALDv8EHmUU314.jpg

小结

ziplist 是由一系列特殊编码的内存块构成的列表,它可以保存字符数组或整数值,它还是

哈希键、列表键和有序集合键的底层实现之一。

ziplist 典型分布结构如下:

wKioL1L3OAbQ7URnAACwi4LzTa4973.jpg

ziplist 节点的分布结构如下:

wKiom1L3OEbRcPr3AABOAaDIVG4939.jpg

添加和删除ziplist 节点有可能会引起连锁更新,因此,添加和删除操作的最坏复杂度为

O(N2) ,不过,因为连锁更新的出现概率并不高,所以一般可以将添加和删除操作的复

杂度视为O(N) 。


这部分有点不太懂,回头需要复习啊!!!
























本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1357518,如需转载请自行联系原作者

相关文章
|
9月前
|
存储 人工智能 索引
Python数据结构:列表、元组、字典、集合
Python 中的列表、元组、字典和集合是常用数据结构。列表(List)是有序可变集合,支持增删改查操作;元组(Tuple)与列表类似但不可变,适合存储固定数据;字典(Dictionary)以键值对形式存储,无序可变,便于快速查找和修改;集合(Set)为无序不重复集合,支持高效集合运算如并集、交集等。根据需求选择合适的数据结构,可提升代码效率与可读性。
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
318 6
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
428 1
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
222 6
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
存储 安全 Linux
将文件映射到内存,像数组一样访问
将文件映射到内存,像数组一样访问
221 1
|
存储 NoSQL Redis
Redis常见面试题:ZSet底层数据结构,SDS、压缩列表ZipList、跳表SkipList
String类型底层数据结构,List类型全面解析,ZSet底层数据结构;简单动态字符串SDS、压缩列表ZipList、哈希表、跳表SkipList、整数数组IntSet
|
存储 索引 Python
python数据结构之列表详解
列表是Python中极为灵活和强大的数据结构,适合于存储和操作有序数据集合。掌握其基本操作和高级特性对于编写高效、清晰的Python代码至关重要。通过本回答,希望能帮助你全面理解Python列表的使用方法,从而在实际编程中更加游刃有余。
231 0
|
Linux C++
Linux c/c++文件虚拟内存映射
这篇文章介绍了在Linux环境下,如何使用虚拟内存映射技术来提高文件读写的速度,并通过C/C++代码示例展示了文件映射的整个流程。
374 0
|
存储 索引 Python
Python编程的常用数据结构—列表
Python编程的常用数据结构—列表
147 0

热门文章

最新文章