首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Redis系列-数据类型list

在前两期中分别介绍了string 和hash,他们一个是存单个数据,一个也是存少量的数据,这时我们就会发现当我想存储大量数据时不太好存储了。所以Redis又为我们提供了list数据类型。

list 类型

数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分

需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序

list类型:保存多个数据,底层使用双向链表存储结构实现

为了能让更好地理解双向链表,以下一起回顾下以前了解或学习到的三种数据存储结构。

1、 顺序表:只一个数据挨着一个数据,从头指针开始,进来的数据一个挨着一个的往后排。其特点是查询快,因为有下标的原因能很快定位到数据并取出。但当需要对数据进行改动时就会很费时,需要将新增或修改数据位置后的数据角标全部挪动一遍。

2、 链表: 头指针指向下一个数据,每个数据会有指针的存储。增删快,查询慢。

当D来了以后D先指向B,然后A断开和B的连接,指向D

3、 双向链表 简单来说就是两头都能指向。因为是双向的所以能从头操作,也可从尾上操作。

当E加入时的修改方式为,B先断开和A连接,然后和E建立互相的连接,之后A断开和B的连接,在和E建立连接关系

List的存储就是一个双向列表,这样我们就可以从两头都能对数据进行操作。

添加/修改数据

lpushkey value1 [value2] ……

rpushkey value1 [value2] ……

获取数据

lrangekey start stop

lindexkey index

llenkey

获取并移除数据

lpopkey

rpopkey

从以上的图显示的数据发现lpush是依次从左面将 a b c d放入数组中,最终在数据中的从左到右是 e d c b a。当使用lpop时就会先把e从数据中移除。当使用rpush时会从右面将数据加入。所以在操作的时候需要明白是从左还是从右对数据进行操作。Llen表示此时数据的长度。

list 类型数据扩展操作

规定时间内获取并移除数据 (阻塞式,等待一定的时间,在规定时间内有数据就接受)(不常用)阻塞式的操作可以理解为对某个或一些队列的监听。当有数据时就会获取并进行相应的操作

blpopkey1 [key2] timeout

brpopkey1 [key2] timeout

brpoplpushsource destination timeout

移除指定数据

lremkey count value

表示从左移除指定的key下指定的value的个数。

List应用:应用于具有操作先后顺序的数据控制。如点赞的顺序,关注顺序,粉丝的关注列表等等。

list 类型数据操作注意事项

list中保存的数据都是string类型的,数据总容量是有限的,最多2的32次方- 1 个元素 (4294967295)。

list具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出栈操作

获取全部数据操作结束索引设置为-1

list可以对数据进行分页操作,通常第一页的信息来自于list,第2页及更多的信息通过数据库的形式加载。

以上为redis数据类型list的一些简单应用和操作。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201121A0FNPS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券