【地铁上的Redis与C#】数据类型(七)--List类型

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

我们这篇文章开始讲解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 indexindex表示要获取的元素的位置例如要获取car中的第五个数据指令这么编写lindex car 4。在开发中有时我们需要获取list中存储的数据的总数这是我们可以llen指令语法是llen key
  3. 获取并移除数据
    当我们需要获取数据并删除数据时可以使用lpoprpop指令这两个指令的区别是一个是从左侧获取并删除另一个是从右侧获取并删除。以lopo为例当我们需要获取car中的第一个数据时我们可以这么编写指令lpop car

总结

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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: redis

“【地铁上的Redis与C#】数据类型(七)--List类型” 的相关文章