【Redis】List列表类型基本使用

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 【Redis】List列表类型基本使用

1. 简介

  • 单键多值
  • Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
  • 它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

在这里插入图片描述

2. 常用命令

  • 从左边插入一个或多个值
lpush <key> <value1> <value2> <value3> ...

在这里插入图片描述

  • 按照索引下标获得元素(从左到右)
lrange <key> <start> <stop>

在这里插入图片描述

  • 0表示左边第一个,-1表示右边第一个,(0,-1表示获取所有)
lrange mylist 0 -1   

在这里插入图片描述

  • 从右边插入一个或多个值
rpush <key> <value1> <value2> <value3> ...

在这里插入图片描述
在这里插入图片描述

  • 从左边/右边吐出一个值。值在键在,值光键亡
lpop/rpop  <key>

在这里插入图片描述

  • 列表右边吐出一个值,插到<key2>列表左边
rpoplpush <key1> <key2>

在这里插入图片描述
在这里插入图片描述

  • 按照索引下标获得元素(从左到右)
lindex <key> <index>

在这里插入图片描述

  • 获得列表长度
llen <key>

在这里插入图片描述

  • <value>的后面插入<newvalue>插入值
linsert <key> before <value> <newvalue>

在这里插入图片描述

  • 从左边删除n个value(从左到右)
lrem <key> <n> <value>

在这里插入图片描述

  • 将列表key下标为index的值替换成value
lset <key> <index> <value>

在这里插入图片描述

3. 链表的数据结构

  • List的数据结构为快速链表 quickList
  • 首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist,也即是压缩列表。
  • 它将所有的元素紧挨着一起存储,分配的是一块连续的内存。
  • 当数据量比较多的时候才会改成quicklist。
  • 因为普通的链表需要的附加指针空间太大,会比较浪费空间。比如这个列表里存的只是int类型的数据,结构上还需要两个额外的指针prev和next。

在这里插入图片描述
在这里插入图片描述

  • Redis将链表和ziplist结合起来组成了quicklist。也就是将多个ziplist使用双向指针串起来使用。这样既满足了快速的插入删除性能,又不会出现太大的空间冗余。
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
16小时前
|
存储 缓存 NoSQL
【技术分享】求取列表需求的redis缓存方案
【技术分享】求取列表需求的redis缓存方案
5 0
|
16小时前
|
JavaScript
DOM 节点列表长度(Node List Length)
`length`属性用于获取DOM节点列表的长度,允许遍历和处理节点。例如,加载&quot;books.xml&quot;到`xmlDoc`,通过`getElementsByTagName(&quot;title&quot;)`获取所有标题节点,然后使用循环输出每个&lt;title&gt;元素的文本内容。
|
16小时前
|
消息中间件 存储 负载均衡
Redis类型 Stream Bitfield
Redis类型 Stream Bitfield
12 0
|
16小时前
|
NoSQL Java Unix
Redis基础操作 String List
Redis基础操作 String List
9 0
|
16小时前
|
XML 数据格式
节点列表长度(Node List Length)
`NodeList`对象自动更新,其`length`属性表示列表中节点数量。例如,加载&quot;books.xml&quot;后,`getElementsByTagName(&#39;title&#39;).length`返回`4`。此属性可用来遍历列表,如示例所示,遍历所有`&lt;title&gt;`元素并打印其文本内容:Everyday Italian, Harry Potter, XQuery Kick Start, Learning XML。
|
16小时前
|
Python
【Python 基础】列表(list)和元组(tuple)有什么区别?
【5月更文挑战第6天】【Python 基础】列表(list)和元组(tuple)有什么区别?
|
16小时前
|
XML 数据格式
节点列表长度(Node List Length)
`Node List`对象自动更新,其`length`属性表示列表中节点数量。在给定示例中,代码加载&quot;books.xml&quot;,并利用`getElementsByTagName(&#39;title&#39;)`获取&lt;title&gt;元素的数量,结果为4。`length`也可用于遍历列表,如示例所示,遍历并打印所有&lt;title&gt;元素的文本内容:Everyday Italian, Harry Potter, XQuery Kick Start, Learning XML。
|
16小时前
|
XML JavaScript 数据格式
DOM 节点列表长度(Node List Length)
`length`属性用于获取DOM节点列表的长度,例如在XML文档中,通过`getElementsByTagName()`获取的所有`&lt;title&gt;`元素的数量。可以遍历这个列表,如示例所示,使用`for`循环访问并输出每个节点的文本值。在提供的实例中,代码加载&quot;books.xml&quot;,然后获取并打印所有&lt;title&gt;元素的子节点值。
|
16小时前
|
XML 存储 JavaScript
DOM 节点列表(Node List)
XML DOM允许访问XML文档的每个节点,提供三种访问方法:getElementsByTagName()、循环遍历和导航节点关系。getElementsByTagName()返回一个节点列表,类似于数组,可用于获取特定标签名的节点。例如,加载&quot;books.xml&quot;后,`xmlDoc.getElementsByTagName(&quot;title&quot;)`会获取所有&lt;title&gt;元素,存储在变量x中。通过索引如x[2]可访问第三个&lt;title&gt;元素,注意索引从0开始。后续章节将进一步探讨节点列表(Node List)。
|
16小时前
|
NoSQL Shell Redis
2、Redis列表
2、Redis列表