我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redis基础教程第6节 List

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Redis基础教程第6节 List

list是一个内部采用双向链表(double linked list) 结构,像列表两端添加元素的时间复杂度为O(1)。主要功能是push、pop、获取一个范围的所有值等,操作中key理解为链表的名字。

链表的最大长度是(2的32次方)。我们可以通过push,pop操作从链表的头部或者尾部添加删除元素。这使得list既可以用作栈,也可以用作队列。


list的pop操作均有阻塞版本的,当我们[lr]pop一个list对象时,如果list是空,或者不存在,会立即返回nil。但是阻塞版本的b[lr]pop可以则可以阻塞,当然可以加超时时间,超时后也会返回nil。为什么要阻塞版本的pop呢,主要是为了避免轮询。


举个简单的例子如果我们用list来实现一个工作队列。执行任务的thread可以调用阻塞版本的pop去获取任务这样就可以避免轮询去检查是否有任务存在。当任务来时候工作线程可以立即返回,也可以避免轮询带来的延迟。


LPUSH Key value 左边插入

RPUSH Key value 右边插入

LPop key 左边弹出

RPop key 右边弹出

BLPOP,BRPOP阻塞式左/右弹出


lpush

129.223.248.154:6379> lpush members ben
(integer) 1
129.223.248.154:6379> lpush members jeff
(integer) 2
129.223.248.154:6379> lpush members mike jeme
(integer) 6


lpop

129.223.248.154:6379> lpop members
"raymond"
129.223.248.154:6379> rpop members
"ben"


llen

129.223.248.154:6379> llen members
(integer) 4


lrange  (lrange firstqueue 0 -1 列出list中全部元素值)

129.223.248.154:6379> lrange members 0 2
1) "richard"
2) "jemery"
3) "mike"
129.223.248.154:6379> llen members
(integer) 4
129.223.248.154:6379> lrange members 0 3
1) "richard"
2) "jemery"
3) "mike"
4) "jeff"
129.223.248.154:6379> lrange members 0 4
1) "richard"
2) "jemery"
3) "mike"
4) "jeff"
129.223.248.154:6379> lrange members 0 -1
1) "richard"
2) "jemery"
3) "mike"
4) "jeff"
5) "derek"


rpop

129.223.248.154:6379> rpop members
"derek"
129.223.248.154:6379> lpop members
"richard"
129.223.248.154:6379> lrange members 0 -1
1) "jemery"
2) "mike"
3) "jeff"


lindex

129.223.248.154:6379> lindex members 1
"mike"
129.223.248.154:6379> llen members
(integer) 3
129.223.248.154:6379> rpush firstqueue 3 2 1
(integer) 3
129.223.248.154:6379> lrange firstqueue 0 -1
1) "3"
2) "2"
3) "1"
129.223.248.154:6379> lpush secqueue 3 2
(integer) 2
129.223.248.154:6379> lrange secqueue 0 -1
1) "2"
2) "3"


rpoplpush  从第一个list的尾部移除元素并添加到第二个list的头部,最后返回被移除的元素值,整个操作是原子的.如果第一个list是空或者不存在返回nil

129.223.248.154:6379> rpoplpush firstqueue secqueue
"1"
129.223.248.154:6379> lrange firstqueue 0 -1
1) "3"
2) "2"
129.223.248.154:6379> lrange secqueue 0 -1
1) "1"
2) "2"
3) "3"
129.223.248.154:6379>


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redis基础教程第6节 List

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

(Redis基础教程之六)如何使用Redis中的List

如何在ubuntu18.04上安装和保护redis如何连接到Redis数据库如何管理Redis数据库和Keys如何在Redis中管理副本和客户端如何在Redis中管理字符串如何在Redis中管理list如何在Redis中管理Hashes如何在Redis中管理S
(Redis基础教程之六)如何使用Redis中的List
2017-01-10

《Python基础教程》第六章--读书

本章会介绍如何将语句组织成函数。还会详细介绍参数(parameter)和作用域(scope)的概念,以及递归的概念及其在程序中的用途。懒惰即美德斐波那契数列:任何一个数都是前两个数之和的数字序列。创建函数内建的callable函数可以用来判
2023-01-31

MySQL基础教程6 —— 函数之控制流程函数

语法:CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condi
2022-05-20

hi 感恩节——Linux基础教程之mysql和php

感恩节。虽然一直没有过这个节日的习惯,但仅仅是听到感恩的消息,都能想到一幅幅画面。愿大家安好! 学习Linux的前言 选择了Linux发行版本,你就会想如何开始学习Linux了。 1.当然是安装Linux了,请上网自行google或者百度,
2022-06-04

(Redis基础教程之八) 如何在Redis中管理Sets

本教程说明了如何创建Sets,检索和删除成员以及比较不同Sets的成员。如何使用本指南本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。本指南中显示的命令已在运行Redis版本4.0.9的Ubuntu 18.04服务器上进行了
(Redis基础教程之八) 如何在Redis中管理Sets
2015-12-21

(Redis基础教程之七)如何使用Redis中的Hashes

本教程将介绍如何在Redis中管理Hashes,从创建Hashes到检索和删除Hashes中保存的数据。如何使用本指南本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。本指南中显示的命令已在运行Redis版本4.0.9的Ubu
(Redis基础教程之七)如何使用Redis中的Hashes
2014-10-15

(Redis基础教程之十) 如何在Redis中运行事务

本教程介绍了如何执行和取消交易,还包括一些与交易通常相关的陷阱的信息。如何使用本指南本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。本指南中显示的命令已在运行Redis版本4.0.9的Ubuntu 18.04服务器上进行了测
(Redis基础教程之十) 如何在Redis中运行事务
2022-04-21

Redis 基础教程之事务的使用方法

Redis 基础教程之事务的使用方法 Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是
2022-06-04

(Redis基础教程之十二) 如何解决Redis中的故障

如何使用本指南本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。本指南中显示的命令已在运行Redis版本4.0.9的Ubuntu 18.04服务器上进行了测试。要设置类似的环境,您可以按照我们的指南如何在Ubuntu 18.0
(Redis基础教程之十二) 如何解决Redis中的故障
2016-02-21

(Redis基础教程之十三) 如何从命令行更改Redis的配置

如何使用本指南本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。本指南中显示的命令已在运行Redis版本4.0.9的Ubuntu 18.04服务器上进行了测试。要设置类似的环境,您可以按照我们的指南如何在Ubuntu 18.0
(Redis基础教程之十三) 如何从命令行更改Redis的配置
2015-06-15

Android第三方HTTP网络支持包OkHttp的基础使用教程

OkHttp 包的设计和实现的首要目标是高效。这也是选择 OkHttp 的重要理由之一。OkHttp 提供了对最新的 HTTP 协议版本 HTTP/2 和 SPDY 的支持,这使得对同一个主机发出的所有请求都可以共享相同的套接字连接。如果
2022-06-06

🤺全套MySQL数据库教程_Mysql基础入门教程,零基础小白自学MySQL数据库必备教程👾#001 # 第一单元 数据库概述 #

二、本单元知识点概述(Ⅰ)知识点概述 二、本单元教学目标(Ⅰ)重点知识目标1.什么是数据库2.市面上常见的数据库有哪些3.SQL和数据库的关系(Ⅱ)能力目标1.熟练安装MySql数据库服务器2.配置数据库服务器3.学会使用第三方工具三、本单元知识详讲1.1 数
🤺全套MySQL数据库教程_Mysql基础入门教程,零基础小白自学MySQL数据库必备教程👾#001 # 第一单元 数据库概述 #
2017-05-17

🚴‍♂️全套MySQL数据库教程_Mysql基础入门教程,零基础小白自学MySQL数据库必备教程☔ #002 # 第二单元 MySQL数据类型、操作表#

二、本单元知识点概述(Ⅰ)知识点概述二、本单元教学目标(Ⅰ)重点知识目标1.Mysql的数据类型2.如何选择数据类型3.创建表4.修改表5.删除表(Ⅱ)能力目标1.熟练创建数据库及删除数据库2.牢记数据类型3.熟练表的操作三、本单元知识详讲2.1 MySQL数
🚴‍♂️全套MySQL数据库教程_Mysql基础入门教程,零基础小白自学MySQL数据库必备教程☔ #002 # 第二单元 MySQL数据类型、操作表#
2015-03-02

软考高项第4版教程难度增加?!零基础备考者的最后机会?

  众所周知,2023上半年软考高级科目-信息系统项目管理师考试第3版教程和第4版教材兼顾使用,2023下半年将全面启用第4版教程。2023下半年备考软考高项是机会还是坑?零基础要如何备考软考高项?一起来看看吧!  一、2023下半年软考高项难度预测  从第4版教程来看:软考高级教程在技术知识内容上进行了大幅增加,前面
软考高项第4版教程难度增加?!零基础备考者的最后机会?
2024-04-19

【Java基础教程】(三十三)常用类库篇 · 第三讲:可变字符串支持类——解析 StringBuffer与 StringBuilder类~

Java基础教程之常用类库 · StringBuffer与 StringBuilder类 1️⃣ StringBuffer类1.1 概念1.2 特征1.3 使用 2️⃣ StringBuilder类2.1 概念及特征2.2 使用
2023-08-17

编程热搜

目录