【地铁上的Redis与C#】数据类型(七)--List类型
创始人
2024-05-13 05:02:15
0

我们这篇文章开始讲解list类型。

什么是list

list是一个存储空间保存多个数据,底层使用双向链表存储结构实现的一种Redis数据类型,。list类型一般用在存储多个数据,并需要对数据进入存储空间的顺序进行区分的情况下。list的存储方式是一个存储空间保存多个数据,且可以通过数据可体现出数据进入的顺序。
前面提到了双向链表,那么我们就在这里简单的学一下与双向两边类似的另外两种数据结构顺序表链表

  1. 顺序表
    顺序表的结构如下图所示
    在这里插入图片描述
    从上图我们可以看出来,顺序表中数据与数据之间是紧密连接的,因此它能很快的检索数据,但是如果要在某个位置插入一个 新的数据就会很耗时,这是因为要插入新数据的位置的数据及其后面所有数据都要后移一位。
  2. 链表
    链表的结构如下图所示
    在这里插入图片描述
    上图中的黄色部分是存储的数据,绿色部分是指向下一个数据存储位置的指针。这种结构解决了前面我们提到的顺序表所遇到的问题,每次插入新数据时只需要将上一个数据的指针指向新插入数据的位置,并将下一个数据的位置写入到当前写入数据的指针中。但是这种存储结构也存在问题,因为数据与数据之间的间距不同,因此查询数据会慢一些,并且每个数据都要额外的存储指向下一个数据位置的指针,这就增加了内存的开销。同时再插入数据时,因为要更改插入位置的前一个数据指针指向的位置,因此要遍历内存找到前一个数据并修改指针指向的地址,因此对内存的开销也很大。
  3. 双向链表:
    双向链表的结果如下图所示
    在这里插入图片描述
    双向链表比链表多存储了前一个数据位置的指针(图中紫色部分),它解决了链表插入耗内存的问题。

list基本操作

了解完list的相关知识,我们来看一下list的基本操作指令。

  1. 添加/修改数据
    当我们需要对数据进行 添加修改时,可以使用lpushrpush指令,这两个指令都可以对数据进行添加数据,唯一的区别是,lpush表示从list的左侧添加数据而rpush表示从list的右侧添加数据。以lpush为例,语法是这样的(rpush语法相同)lpush key value1 value2 … valuen,例如我们向name中插入“anna”、“jack”,我们可以这么编写指令lpush name anna jack
  2. 获取数据
    获取数据时可以使用lpush指令,语法是这样的lpush key start stop,其中start表述获取数据的起始位置,stop表获取数据的结束位置,例如我们要获取car的第1个到第4个的数据,我们可以这么编写指令lpush car 0 3。如果要获取从起始位置到结尾的全部数据,那么我们可以将stop设置为-1。当然如果只需要获取某个数据我们可以使用lindex,语法是这样的lindex key index,index表示要获取的元素的位置,例如要获取car中的第五个数据,指令这么编写lindex car 4。在开发中有时我们需要获取list中存储的数据的总数,这是我们可以llen指令,语法是llen key
  3. 获取并移除数据
    当我们需要获取数据并删除数据时可以使用lpoprpop指令,这两个指令的区别是一个是从左侧获取并删除,另一个是从右侧获取并删除。以lopo为例,当我们需要获取car中的第一个数据时,我们可以这么编写指令lpop car

总结

这篇文章我们讲解了list类型和list的基本操作。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...