定义空list_redis 数据结构之链表 List

Redis的List数据结构通过链表实现,支持快速在两端添加元素。常用于社交网络最新更新存储、生产者-消费者模式等场景。List支持LTrim命令设置上限,仅保留最新N项。此外,BRPOP等阻塞操作使其适用于队列实现,当List为空时可设置超时等待。
摘要由CSDN通过智能技术生成

cd2ec474b9318db850d01e1a1c1d45c9.png

redis 数据结构之链表 List

为了解释 List 数据类型,最好从一点理论开始,因为术语 List 经常被信息技术人员以不正当的方式使用。例如,“Python Lists” 不是名称所暗示的(Linked Lists),而是Arrays(实际上相同的数据类型在 Ruby 中称为 Array)。

一般看来,List 只是一系列有序元素。例如:10,20,1,2,3 是一个 List。但是使用 Array 实现的 List 的属性与使用 Linked List 实现的 List 的属性有很大区别。

Redis 的 List 通过 Linked List 实现。这意味着即使List中有数百万个元素,在 List 的头部或尾部添加新元素也会在常量时间内。使用 LPUSH 命令将新元素添加到一个具有十个元素的 List 的头部的速度与将具有 1000 万个元素的元素添加到 List 头部的速度相同。

由链表实现的 List 有什么缺点?在使用Array(常量时间索引访问)实现的 List 中,通过索引访问元素非常快,而在由链表实现的 List 中则不是那么快(其中操作需要与所访问元素的索引成比例的工作量)。

Redis List 使用 Linked List 实现,因为对于数据库系统,能够以非常快的方式将元素添加到很长的 List 中是至关重要的。正如您稍后将看到的那样,Redis Lists 可以在恒定时间内保持恒定长度。

当需要快速访问大量元素集合的中间位置时,可以使用不同的数据结构,称为排序集(Sorted sets)。排序集将在本教程后面介绍。

1. 使用 Redis List的第一步

LPUSH 命令将新元素添加到左侧(头部)的 List 中,而 RPUSH 命令将新元素添加到右侧(尾部)的 List 中。最后,LRANGE 命令从List中提取元素范围:

> rpush mylist A
(integer) 1
> rpush mylist B
(integer) 2
> lpush mylist first
(integer) 3
> lrange mylist 0 -1    // 这里使用 0 -1 表示显示所有元素,注意是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值