Redis数据类型之List类型

news2024/11/26 12:45:42

文章目录

  • 简介
  • 常用命令
    • 赋值语法
      • LPUSH
      • RPUSH
      • LPUSHX
      • RPUSHX
    • 取值语法
      • LLEN
      • LINDEX
      • LRANGE
    • 删除语法
      • LPOP
      • RPOP
      • BLPOP
      • BRPOP
      • LTRIM
      • LREM
    • 修改语法
      • LSET
      • LINSERT
  • 高级命令
    • RPOPLPUSH
  • 应用场景

简介

List类型是一个链表结构的集合,其主要功能有push,pop,获取元素等,更详细的说,List类型是一个双端链表的结构,我们可以通过相关的操作进行集合的头部或者尾部添加或删除元素,List的设计非常灵巧,既可以作为栈,也可以作为队列,满足大多数要求。

按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含2的32次方-1(每个列表超过40亿个元素),类似于JAVA的LinkedList

常用命令

赋值语法

LPUSH

LPUSH KEY value1 [value2] 

将一个或多个值插入到列表头部(**从左侧添加**

127.0.0.1:6379> lpush list 0 1 2 3 4 5
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
6) "0"

RPUSH

RPUSH KEY value [value2]

往列表中添加一个或多个值(从右侧添加

127.0.0.1:6379> rpush list2 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lrange list2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

LPUSHX

LPUSHX KEY value1 

将一个值插入到已存在列表的头部如果列表不存在,操作无效

127.0.0.1:6379> keys *
1) "list2"
2) "list"
127.0.0.1:6379> LPUSHX  s 1
(integer) 0
127.0.0.1:6379> lrange list 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
6) "0"
127.0.0.1:6379> lpushx list 6
(integer) 7
127.0.0.1:6379> lrange list 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
7) "0"

RPUSHX

RPUSHX KEY value1 

将一个值插入到已存在列表的尾部如果列表不存在,操作无效

取值语法

LLEN

LLEN KEY

获取列表长度

127.0.0.1:6379> llen list
(integer) 7

LINDEX

LINDEX key index

通过索引获取列表中的元素(从上到下

127.0.0.1:6379> lrange list 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
7) "0"
127.0.0.1:6379> lindex list 0
"6"

LRANGE

LRANGE key start stop

获取列表指定范围的元素
在这里插入图片描述

127.0.0.1:6379> lrange list 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
7) "0"

删除语法

LPOP

LPOP KEY

移出并获取列表的第一个元素(从左侧删除)

127.0.0.1:6379> LRANGE list 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
7) "0"
127.0.0.1:6379> lpop list
"6"
127.0.0.1:6379> lrange list 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
6) "0"

RPOP

RPOP KEY

移出列表的最后一个元素,返回值为移除的元素(从右侧删除)

127.0.0.1:6379> lrange list 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
6) "0"
127.0.0.1:6379> rpop list
"0"
127.0.0.1:6379> lrange list 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"

BLPOP

BLPOP KEY  timeout 

移除并获取列表第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

127.0.0.1:6379> blpop l2 1
(nil)
(1.01s)

在以上实列中,操作被会阻塞,如果直到列表l2中存在数据则会返回第一个元素,否则会等待1秒后返回nil

BRPOP

BRPOP KEY timeout

移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

LTRIM

LTRIM key start stop

对一个列表进行修剪,让列表只保留指定区间内的元素,不在指定区间之内的元素都被删除

127.0.0.1:6379> lrange list 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> ltrim list 1 3
OK
127.0.0.1:6379> lrange list 0 -1
1) "4"
2) "3"
3) "2"

LREM

LREM KEY

删除N个value值。

127.0.0.1:6379> rpush list3 1 1 1 2 2 3 3 3 3 4 3
(integer) 11
127.0.0.1:6379> lrange list3 0 -1
 1) "1"
 2) "1"
 3) "1"
 4) "2"
 5) "2"
 6) "3"
 7) "3"
 8) "3"
 9) "3"
10) "4"
11) "3"
127.0.0.1:6379> lrem list3 2 2
(integer) 2
127.0.0.1:6379> lrange list3 0 -1
1) "1"
2) "1"
3) "1"
4) "3"
5) "3"
6) "3"
7) "3"
8) "4"
9) "3"

修改语法

LSET

LSET KEY index value

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

127.0.0.1:6379> lrange list 0 -1
1) "4"
2) "3"
127.0.0.1:6379> lset list 0 0
OK
127.0.0.1:6379> lrange list 0 -1
1) "0"
2) "3"

LINSERT

LINSERT KEY BEFORE|AFTER  world value

在列表的元素前或者后插入元素,描述:将值value插入到列表key当中,位于world的之前或者之后

127.0.0.1:6379> lrange list 0 -1
1) "0"
2) "3"
127.0.0.1:6379> LINSERT list before 3 2
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "0"
2) "2"
3) "3"

高级命令

RPOPLPUSH

RPOPLPUSH source destination

移除列表的最后一个元素,并将该元素添加到另一个列表左侧并返回

127.0.0.1:6379> lrange list1 0 -1
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> lrange list2 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> rpoplpush list1 list2
"1"
127.0.0.1:6379> lrange list2 0 -1
1) "1"
2) "a"
3) "b"
4) "c"

实例描述:

  • RPOPLPUSH a1 a2 :集合a1的最后元素移到a2的左侧
  • RPOPLPUSH a1 a1 :循环列表,将最后元素移到左侧
127.0.0.1:6379> lrange list1 0 -1
1) "2"
2) "3"
127.0.0.1:6379>  rpoplpush list1 list1
"3"
127.0.0.1:6379> lrange list1 0 -1
1) "3"
2) "2"
  • BRPOPLPUSH source destination timeout :从列表中弹出一个值,将弹出的元素插入到另一个列表中并返回他,如果列表没有元素会阻塞列表直到等待超时或者发现可弹出元素为止

应用场景

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1190772.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023中国互联网公司排行榜!

日前,中国互联网协会正式发布《中国互联网企业综合实力指数(2023)》报告,同时还发布了2023年中国互联网综合实力前百家企业榜单、2023年中国互联网成长型前二十家企业和数据安全服务前五家企业名单。 总体来看,我国互…

C/C++特殊求和 2021年6月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C幻数求和 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C幻数求和 2021年6月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 如果一个数能够被7整除或者十进制表示中含有数字7&…

已解决:云原生领域的超时挂载Bug — Kubernetes深度剖析

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

尼得科电机的强大性能,将列车门和屏蔽门的开合变得从容而安全

城市脉动,人流涌动。 无论城市轨道交通还是远途铁路运输, 尼得科电机的强大性能,将列车门和屏蔽门的开合变得从容而安全。 尼得科的电机方案,有助于列车门稳准开闭,保障乘客安全无忧。高效驱动,让乘客的行程…

VUE获取当前日期的周日和周六

<template><div><div click"handleLast()">上一周</div><div click"handleNext()">下一周</div><el-calendarref"monChild"v-model"value":first-day-of-week"7":range"[sta…

iis 部署 netcore 和vue 共用端口

常规情况下&#xff0c;vue 和api是分开的两个站点进行部署&#xff0c;若是要对外只有一个端口的话&#xff0c;采用以下梁总方式即可。 1.需要配置路由转发和代理开启&#xff08;vue 使用hisoty模式&#xff09; 参考链接.netCore vue&#xff08;history模式&#xff0…

线性代数(六)| 二次型 标准型转换 正定二次型 正定矩阵

文章目录 1. 二次型化为标准型1.1 正交变换法1.2 配方法 2 . 正定二次型与正定矩阵 1. 二次型化为标准型 和第五章有什么样的联系 首先上一章我们说过对于对称矩阵&#xff0c;一定存在一个正交矩阵Q&#xff0c;使得$Q^{-1}AQB $ B为对角矩阵 那么这一章中&#xff0c;我们…

IBM Qiskit量子机器学习速成(一)

声明&#xff1a;本篇笔记基于IBM Qiskit量子机器学习教程的第一节&#xff0c;中文版译文详见&#xff1a;https://blog.csdn.net/qq_33943772/article/details/129860346?spm1001.2014.3001.5501 概述 首先导入关键的包 from qiskit import QuantumCircuit from qiskit.u…

暴力递归转动态规划(十四)

题目 arr是面值数组&#xff0c;其中的值都是正数且没有重复。再给定一个正数aim。 每个值都认为是一种面值&#xff0c;且认为张数是无限的。 返回组成aim的最少货币数 暴力递归 依然是面值张数的问题&#xff0c;暴力递归尝试的过程是从数组arr index 0位置出发&#xff0c…

mongodb导出聚合查询的数据

❗️❗️❗️在正文之前先要讲一个坑&#xff0c;就是mongoexport这个命令工具不支持导出聚合查询的数据&#xff0c;比如通过某某字段来分组 我查了一天关于mongoexport怎么来导出聚合查询的结果集&#xff0c;最终还是gpt给了我答案 &#x1f62d; 既然mongoexport不支持&…

Postgresql数据类型-布尔类型

前面介绍了PostgreSQL支持的数字类型、字符类型、时间日期类型&#xff0c;这些数据类型是关系型数据库的常规数据类型&#xff0c;此外PostgreSQL还支持很多非常规数据类型&#xff0c;比如布尔类型、网络地址类型、数组类型、范围类型、json/jsonb类型等&#xff0c;从这一节…

微信的通讯录联系人,有没有什么办法导出来做备份

6-10 这是可以做到的&#xff0c;并且很简单&#xff0c;对于需要把微信通讯录备份出来&#xff0c;或者离职交接的人来说&#xff0c;本文非常适合阅读&#xff0c;只是一个简单的方法&#xff0c;即可快速地把微信的通讯录搞出来&#xff0c;本质其实就是使用正确的工具就行…

Capacitor 插件 实现本地通知 Local Notification @capacitor/local-notifications

Capacitor 插件 实现本地通知 Local Notification capacitor/local-notifications 在前一个文章中使用 Capacitor 和 H5 应用构建了一个 Android 应用&#xff0c;这个 h5 是通过 uniapp 生成的。 https://blog.csdn.net/KimBing/article/details/134093769 这个应用的构成是这…

微机原理3

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案。 1. 在机器数中&#xff0c;零的表示形式唯一的编码是() A. 原码 B. 补码 C.移码 D. 反码 2,用于定义常数、变量的内存空间分配和定位的是()。 A. 伪指令 B.机器指令…

(C++17) variant的使用与union对比

文章目录 前言与需求union内存映射图C11的union 使用ref示例构造普通构造置空emplacemonostate 访问std::get<>std::holds_alternative<>获取指针std::get_if<>获取可选数量个数std::variant_size END 前言与需求 联合体&#xff0c;是在C语言时代就存在的概…

『亚马逊云科技产品测评』活动征文|AWS 云服务器实例类型及其适用场景详细说明

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 目录 一、AWS 定价计算器 &#xff08;1&#xff09;定价计算器官网 &…

Linux环境配置(云服务器)

目录 1.第一步&#xff1a;购买云服务器 2.第二步&#xff1a;下载Xshell 7 3.第三步&#xff1a;打开Xshell&#xff0c;登录云服务器 4.第四步&#xff1a;更加便捷的云服务器登录方式 1.第一步&#xff1a;购买云服务器 &#xff08;推荐&#xff1a;阿里云、华为云、腾…

机器视觉工程师注意,没有经历过公司倒闭看下文章,机器视觉公司即将要倒闭的征兆是什么?

很多机器视觉工程师没有经历过公司倒闭&#xff0c;谁也不想自己的公司倒闭&#xff0c;毕竟我们是打工人&#xff0c;拿固定工资的。 机器视觉公司即将要倒闭的征兆有哪些迹象​&#xff1f;​ 1、PM&#xff0c;机器视觉工程师频繁开会&#xff0c;甚至周末强制开会。 2.停…

P6入门:项目初始化1-项目详情介绍

前言 使用项目详细信息查看和编辑有关所选项目的详细信息&#xff0c;在项目创建完成后&#xff0c;初始化项目是一项非常重要的工作&#xff0c;涉及需要设置的内容包括项目名&#xff0c;ID,责任人&#xff0c;日历&#xff0c;预算&#xff0c;资金&#xff0c;分类码等等&…

Zigbee—网络层地址分配机制

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;孤雏 0:21━━━━━━️&#x1f49f;──────── 4:14 &#x1f504; ◀️ ⏸ ▶️ ☰ &#x1f497;关注…