热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

006_Redis的List数据类型

1.List类型是一个链表结构的集合,主要功能有push,pop,获取元素等。List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,List的设

1. List类型是一个链表结构的集合, 主要功能有push, pop, 获取元素等。List类型是一个双端链表的结构, 我们可以通过相关操作进行集合的头部或者尾部添加删除元素, List的设计非常简单精巧, 既可以做为栈, 又可以作为队列。List类型可以存放相同的值。

2. 将一个或多个值插入到列表头部

2.1. 语法: lpush key value1 [value2]。

2.2. lpush命令将一个或多个值插入到列表头部(栈的功能, 先进后出)。如果key不存在, 一个空列表会被创建并执行lpush操作。当key存在但不是列表类型时, 返回一个错误。

2.3. 返回执行lpush命令后, 列表的长度。

2.4. 实例

3. 将一个或多个值插入到列表尾部

3.1. 语法: rpush key value1 [value2]。

3.1. rpush命令用于将一个或多个值插入到列表的尾部(队列的功能, 先进先出)。如果列表不存在, 一个空列表会被创建并执行rpush操作。当列表存在但不是列表类型时, 返回一个错误。

3.1. 返回执行rpush操作后, 列表的长度。

3.1. 实例

4. 移出并获取列表的第一个元素

4.1. 语法: lpop key。

4.2. lpop命令移出列表的第一个元素(头部), 并返回元素。

4.3. 返回列表的第一个元素(移除的元素)。当列表key不存在时, 返回nil。

4.4. 实例

5. 移除并获取列表的最后一个元素

5.1. 语法: rpop key。

5.2. rpop命令用于移除列表的最后一个元素(尾部), 返回值为移除的元素。

5.3. 返回列表的最后一个元素(移除的元素)。当列表key不存在时, 返回nil。

5.4. 实例

6. 在列表的元素前或者后插入元素

6.1. 语法: linsert key before|after pivot value。

6.2. linsert命令用于在列表的元素前或者后插入元素。当指定元素不存在于列表中时, 不执行任何操作。当列表不存在时, 被视为空列表, 不执行任何操作。如果key不是列表类型, 返回一个错误。

6.3. 如果命令执行成功, 返回插入操作完成之后, 列表的长度。如果没有找到指定元素, 返回-1。如果key不存在或为空列表, 返回0。

6.4. 实例

7. 获取列表长度

7.1. 语法: llen key。

7.2. llen命令用于返回列表的长度。如果列表key不存在, 则key被解释为一个空列表, 返回0。如果key不是列表类型, 返回一个错误。

7.3. 返回列表的长度。

7.4. 实例

8. 获取列表指定范围内的元素

8.1. 语法: lrange key start stop。

8.2. lrange返回列表中指定区间内的元素, 区间以偏移量start和end指定。其中0表示列表的第一个元素, 1表示列表的第二个元素, 以此类推。你也可以使用负数下标, 以-1表示列表的最后一个元素, -2表示列表的倒数第二个元素, 以此类推。

8.3. 返回一个列表, 包含指定区间内的元素。

8.4. 实例

9. 通过索引获取列表中的元素

9.1. 语法: lindex key index。

9.2. lindex命令用于通过索引获取列表中的元素。你也可以使用负数下标, 以-1表示列表的最后一个元素, -2表示列表的倒数第二个元素, 以此类推。

9.3. 返回列表中下标为指定索引值的元素。如果指定索引值不在列表的区间范围内, 返回nil。

9.4. 实例

10. 通过索引设置列表元素的值

10.1. 语法: lset key index value。

10.1. lset通过索引来设置元素的值。当索引参数超出范围或对一个空列表进行lset时, 返回一个错误。

10.1. 返回操作成功返回ok, 否则返回错误信息。

10.1. 实例

11. 对一个列表进行修剪

11.1. 语法: ltrim key start stop。

11.2. ltrim对一个列表进行修剪(trim), 就是说, 让列表只保留指定区间内的元素, 不在指定区间之内的元素都将被删除。下标0表示列表的第一个元素, 以1表示列表的第二个元素, 以此类推。 你也可以使用负数下标, 以-1表示列表的最后一个元素, -2表示列表的倒数第二个元素, 以此类推。

11.3. 命令执行成功时, 返回ok。

11.4. 实例

12. 移除列表元素

12.1. 语法: lrem key count value。

12.2. lrem根据参数count的值, 移除列表中与参数value相等的元素。

count 的值可以是以下几种:

count > 0: 从表头开始向表尾搜索, 移除与value相等的元素, 数量为count。

count <0: 从表尾开始向表头搜索, 移除与value相等的元素, 数量为count的绝对值。

count &#61; 0: 移除表中所有与value相等的值。

12.3. 返回被移除元素的数量。列表不存在时返回0。

12.4. 实例

13. 将一个值插入到已存在的列表头部

13.1. 语法: lpushx key value。

13.1. lpushx将一个值插入到已存在的列表头部, 列表不存在时操作无效。

13.1. 返回lpushx命令执行之后, 列表的长度。

13.1. 实例

14. 将一个值插入到已存在的列表尾部

14.1. 语法: rpushx key value。

14.1. rpushx命令用于将一个值插入到已存在的列表尾部。如果列表不存在, 操作无效。

14.1. 返回执行rpushx操作后, 列表的长度。

14.1. 实例

15. 移除列表的最后一个元素到另一个列表并返回元素

15.1. 语法: rpoplpush source destination。

15.2. rpoplpush命令用于移除列表的最后一个元素, 并将该元素添加到另一个列表并返回元素。

15.3. 返回被弹出的元素。

15.4. 实例

16. 移除并获取列表的第一个元素并设置超时时间

16.1. 语法: blpop key1 [key2] timeout。

16.1. blpop命令移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。超时时间以秒为单位。

16.1. 如果列表为空, 返回一个nil。否则, 返回一个含有两个元素的列表, 第一个元素是被弹出元素所属的key, 第二个元素是被弹出元素的值。

16.1. 实例

17. 移除并获取列表的最后一个元素并设置超时时间

17.1. 语法: brpop key1 [key2] timeout。

17.2. brpop命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。超时时间以秒为单位。

17.3. 假如在指定时间内没有任何元素被弹出, 则返回一个nil和等待时长。反之, 返回一个含有两个元素的列表, 第一个元素是被弹出元素所属的key, 第二个元素是被弹出元素的值。

17.4. 实例

18. 从列表中取出最后一个元素并插入到另外一个列表的头部并设置超时时间

18.1. 语法: brpoplpush source destination timeout。

18.2. brpoplpush命令从列表中取出最后一个元素, 并插入到另外一个列表的头部; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。超时时间以秒为单位。

18.3. 假如在指定时间内没有任何元素被弹出, 则返回一个nil和等待时长。反之, 返回被弹出的元素值。

18.4. 实例


推荐阅读
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文介绍如何使用 Python 编写程序,检查给定列表中的元素是否形成交替峰值模式。我们将探讨两种不同的方法来实现这一目标,并提供详细的代码示例。 ... [详细]
author-avatar
梨依籽_852
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有