当前位置:网站首页 > 容器化与Kubernetes > 正文

list字符串转换成list(list字符串转化为list 对象)



文章目录

一、List数据类型

二、数据结构

三、List常见命令

详细介绍:

Redis中的List类型与Java中的LinkedList类似,可以看做是一个双向链表结构,按插入顺序排序,你可以添加一个元素到头部(左边)或尾部(右边)。在 Redis 中,列表最多可以包含 2^32 - 1 个元素。既可以支持正向检索和也可以支持反向检索。特征也与LinkedList类似:

根据 Redis 双向列表的特性,因此其也被用于异步队列的使用。实际开发中将需要延后处理的任务结构体序列化成字符串,放入 Redis 的队列中,另一个线程从这个列表中获取数据进行后续处理。

Redis的List结构类似一个双端链表,可以从首、尾操作列表中的元素:

QuickList结构如下:

在 Redis3.2 版本前,Redis 列表 List 使用两种数据结构作为底层实现:

在 Redis3.2 版本前 压缩列表不仅是 List 的底层实现之一,同时也是 Hash、 ZSet 两种数据类型底层实现之一。

ZipList是一种特殊的“双端链表”(并非链表),由一系列特殊编码的连续内存块组成,像内存连续的数组。可以在任意一端进行压入/弹出操作,并且该操作的时间复杂度为O(1)。

压缩列表 底层数据结构:本质是一个数组,增加了列表长度、尾部偏移量、列表元素个数、以及列表结束标识,有利于快速寻找列表的首尾节点;但对于其他正常的元素,如元素2、元素3,只能一个个遍历,效率仍没有很高效。

当我们的 List 列表数据量比较少的时候,且存储的数据轻量的(如小整数值、短字符串)时候, Redis 就会通过压缩列表来进行底层实现。

注意:

LinkedList 是标准的双向链表,Node 节点包含 prev 和 next 指针,分别指向后继与前驱节点,因此从双向链表中的任意一个节点开始都可以很方便地访问其前驱与后继节点。

LinkedList 可以进行双向遍历;添加删除元素快 O(1),查找元素慢 O(n),高效实现了 LPUSH 、RPOP、RPOPLPUSH,但由于需要为每个节点分配额外的内存空间,所以会浪费一定的内存空间。这种编码方式适用于元素数量较多或者元素较大的场景。

LinkedList 结构为链表提供了表头指针 head、表尾指针 tail,以及节点数量计算 len。下图展示一个由 list 结构和三个 listNode 节点组成的链表:

Redis 的链表实现的特性可以总结如下:

QuickList底层 LinkedList + ZipList,可以从双端访问,内存占用较低,保含多个ZipList,存储上限高。其特点:

ZipList虽然节省内存,但申请内存必须是连续空间,如果内存占用较多,申请效率较低。

List的常见命令有

参考 、

到此这篇list字符串转换成list(list字符串转化为list 对象)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • rknn模型(rknn模型量化)2025-03-04 16:09:06
  • 启动docker容器命令(启动 docker)2025-03-04 16:09:06
  • kvm虚拟化原理(简述kvm虚拟化功能特性及优缺点?)2025-03-04 16:09:06
  • docker启动容器命令解释(docker 启动容器失败)2025-03-04 16:09:06
  • 启动docker容器命令(启动docker的命令)2025-03-04 16:09:06
  • 公司的阶级(公司的阶级分化)2025-03-04 16:09:06
  • kubelet二进制文件(kubernetes二进制安装部署)2025-03-04 16:09:06
  • 字符串转换为int数组(字符串转化为int)2025-03-04 16:09:06
  • kubernetes中kubelet主要功能(kubernetes的功能)2025-03-04 16:09:06
  • 启动docker容器命令(docker启动容器命令解释)2025-03-04 16:09:06
  • 全屏图片