【redis】list类型命令简述

redis的list类型,可以存储双向链表作为value,key保留有head和tail指针可以指向双向链表的头和尾,因此可以直接从头或尾对list进行操作。
全部命令如下:

127.0.0.1:6379> help @listBLMOVE source destination LEFT|RIGHT LEFT|RIGHT timeoutsummary: Pop an element from a list, push it to another list and return it; or block until one is availablesince: 6.2.0BLMPOP timeout numkeys key [key ...] LEFT|RIGHT [COUNT count]summary: Pop elements from a list, or block until one is availablesince: 7.0.0BLPOP key [key ...] timeoutsummary: Remove and get the first element in a list, or block until one is availablesince: 2.0.0BRPOP key [key ...] timeoutsummary: Remove and get the last element in a list, or block until one is availablesince: 2.0.0BRPOPLPUSH source destination timeoutsummary: Pop an element from a list, push it to another list and return it; or block until one is availablesince: 2.2.0LINDEX key indexsummary: Get an element from a list by its indexsince: 1.0.0LINSERT key BEFORE|AFTER pivot elementsummary: Insert an element before or after another element in a listsince: 2.2.0LLEN keysummary: Get the length of a listsince: 1.0.0LMOVE source destination LEFT|RIGHT LEFT|RIGHTsummary: Pop an element from a list, push it to another list and return itsince: 6.2.0LMPOP numkeys key [key ...] LEFT|RIGHT [COUNT count]summary: Pop elements from a listsince: 7.0.0LPOP key [count]summary: Remove and get the first elements in a listsince: 1.0.0LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len]summary: Return the index of matching elements on a listsince: 6.0.6LPUSH key element [element ...]summary: Prepend one or multiple elements to a listsince: 1.0.0LPUSHX key element [element ...]summary: Prepend an element to a list, only if the list existssince: 2.2.0LRANGE key start stopsummary: Get a range of elements from a listsince: 1.0.0LREM key count elementsummary: Remove elements from a listsince: 1.0.0LSET key index elementsummary: Set the value of an element in a list by its indexsince: 1.0.0LTRIM key start stopsummary: Trim a list to the specified rangesince: 1.0.0RPOP key [count]summary: Remove and get the last elements in a listsince: 1.0.0RPOPLPUSH source destinationsummary: Remove the last element in a list, prepend it to another list and return itsince: 1.2.0RPUSH key element [element ...]summary: Append one or multiple elements to a listsince: 1.0.0RPUSHX key element [element ...]summary: Append an element to a list, only if the list existssince: 2.2.0

下面示例如下:

lpush:lpush key e1 e2 e3…将数据从头那里推入list
lpop:lpop key,将数据从head弹出
这样2个同向的命令组合起来,可以实现一个队列
反向的命令组合起来,可以实现一个栈。

127.0.0.1:6379> lpush k1 a b c d e
(integer) 5
127.0.0.1:6379> lpop k1
"e"
127.0.0.1:6379> lpop k1
"d"

lrange :lrange key start end,展示key对应的从下标start到end的所有数据

127.0.0.1:6379> lrange k1 0 -1
1) "c"
2) "b"
3) "a"

lindex:lindex key index ,返回key对应的List指定index位置的值

127.0.0.1:6379> lrange k1 0 -1
1) "f"
2) "e"
3) "d"
4) "c"
5) "b"
6) "a"
127.0.0.1:6379> lindex k1 1
"e"

lset:lset key index value,在key对应的list中的指定下标处替换为value

127.0.0.1:6379> lset k1 3 x
OK
127.0.0.1:6379> lrange k1 0 -1
1) "f"
2) "e"
3) "d"
4) "x"
5) "b"
6) "a"

lrem:lrem key num target,删除key对应的list中的target元素,如果num大于0,从head开始删num个。如果num小于0,从tail开始删abs(num)个

127.0.0.1:6379> lrange k3 0 -11) "d"2) "6"3) "a"4) "5"5) "c"6) "4"7) "a"8) "3"9) "b"
10) "2"
11) "a"
12) "1"
127.0.0.1:6379> lrem k3 2 a
(integer) 2
127.0.0.1:6379> lrange k3 0 -11) "d"2) "6"3) "5"4) "c"5) "4"6) "3"7) "b"8) "2"9) "a"
10) "1"

linsert:linsert key before/after element value,在key对应的list中,在元素element(不是下标)之前或者之后,添加value

127.0.0.1:6379> lrange k3 0 -11) "d"2) "6"3) "5"4) "c"5) "4"6) "3"7) "b"8) "2"9) "a"
10) "1"
127.0.0.1:6379> linsert k3 after 6 a
(integer) 11
127.0.0.1:6379> lrange k3 0 -11) "d"2) "6"3) "a"4) "5"5) "c"6) "4"7) "3"8) "b"9) "2"
10) "a"
11) "1"

llen:llen key,返回长度
redis的List类型有很多关于下标的操作,也可以将其抽象为一个数组来使用

127.0.0.1:6379> llen k3
(integer) 10

blpop:blpop key time,弹出指定key对应的list中的一个元素,如果list没有元素或者不存在key对应的这个list,则阻塞等待time指定的时间,0表示一直等待,单位是s。

127.0.0.1:6379> blpop k1 0

阻塞期间如果list有了元素,则会中断阻塞并弹出

127.0.0.1:6379> blpop k1 0
1) "k1"
2) "a"
(35.77s)

ltrim:ltrim key start end,删除key对应的list start和end之外的两端的元素

127.0.0.1:6379> lrange k4 0 -1
1) "f"
2) "e"
3) "d"
4) "c"
5) "b"
6) "a"
127.0.0.1:6379> ltrim k4 1 -2
OK
127.0.0.1:6379> lrange k4 0 -1
1) "e"
2) "d"
3) "c"
4) "b"

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

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

相关文章

CCF真题练习:202209-1如此编码

题目背景 某次测验后,顿顿老师在黑板上留下了一串数字 23333 便飘然而去。凝望着这个神秘数字,小 P 同学不禁陷入了沉思…… 题目描述 已知某次测验包含 n 道单项选择题,其中第 i 题(1≤i≤n)有 个选项,…

了解交换机接口的链路类型(access、trunk、hybrid)

上一个章节中讲到了vlan的作用及使用,这篇了解一下交换机接口的链路类型和什么情况下使用 vlan在数据包中是如何体现的,在上一篇的时候提到测试了一下,从PC1去访问PC4的时候,只从E0/0/2发送给了E0/0/3这是,因为两个接…

gogs的自定义配置

在 GOGS 下载并安装后,在程序目录下建立一个custom/conf/app.ini的配置文件,内容如下: APP_NAME Gogs # APP名字 RUN_USER git # 启动用户,设置后只能以此账号启动gogs RUN_MODE prod[database] DB_TYPE mysql HOST 1…

PHP特性之CTF中常见的PHP绕过

目录 一、关于md5()和sha1()的常见绕过 1、使用数组绕过 2、 使用特殊字符串绕过 二、strcmp绕过 三、switch绕过 四、intval绕过 一、关于md5()和sha1()的常见绕过 知识介绍: 1、对于php强比较和弱比较:md5(),sha1()函数无法处理数组…

使用3DS Max 创建未来派螺栓枪模型

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 步骤 1 创建一个框并将其转换为可编辑多边形(右键单击>转换为:>转换为可编辑多边形),然后使用连接添加一系列边循环,如下图所示。 步骤 2 …

基于JavaSpringBoot+Vue+uniapp微信小程序实现鲜花商城购物系统

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

⚡【C语言趣味教程】(3) 浮点类型:单精度浮点数 | 双精度浮点型 | IEEE754 标准 | 介绍雷神之锤 III 源码中的平方根倒数速算法 | 浮点数类型的表达方式

🔗 《C语言趣味教程》👈 猛戳订阅!!! ​—— 热门专栏《维生素C语言》的重制版 —— 💭 写在前面:这是一套 C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅&#…

文件IO_文件截断_ftruncate,truncate(附Linux-5.15.10内核源码分析)

目录 1.为什么需要文件截断? 2.truncate函数介绍 2.1 truncate函数 2.2 truncate函数内核源码分析 2.3 truncate函数使用示例 3.ftruncate函数介绍 3.1 ftruncate函数 3.2 ftruncate函数内核源码分析 3.3 ftruncate函数使用示例 3.4 ftruncate和文件偏移量…

进程间通信之共享内存

共享内存 1.共享内存的概念2.共享内存函数2.1 shmget函数2.2 shmat函数2.3 shmdt函数2.4 shmctl函数 3. 共享内存的使用 1.进程间通信的分类: (1)管道:1、匿名管道pipe;2、命名管道mkfifo (2)System V IPC&…

跨境电商中的安全利器与效率助推器

在如今全球互联网时代,跨境电商已成为全球贸易的重要组成部分。然而,对于从事跨境电商的企业和个人而言,面对诸多网络隐私与安全风险,如何确保在线操作的安全性和高效性成为了摆在他们面前的重要课题。本文将向您介绍隐擎Fox指纹浏…

从Spring 应用上下文获取 Bean

ApplicationContext 提供了获取所有已经成功注入 Spring IoC 容器的 Bean 名称的方法 getBeanDefinitionNames() 。然后我们可以借助于其 getBean(String name) 方法使用 Bean 名称获取特定的 Bean。 我们使用 CommandLineRunner 接口来打印一下结果。 1.1 获取所有的 Bean im…

手机APP智能硬件开发,蓝牙设备如何测试?

一、APP扫描设备 1、手机端蓝牙不同设置下是否能正常扫描:蓝牙打开、蓝牙关闭; 2、蓝牙设备被扫描到并出现在可连接设备列表的条件: 蓝牙设备名称与可连接的设备列表中的名称匹配、设备处于广播状态; 蓝牙设备与可连接的设备列…

【前端技巧】CSS常用知识碎片(九)

CSS常用知识碎片(九) mask-image属性 带有半透明的PNG图像的遮罩效果 .mask-image {mask: no-repeat center / contain;mask-image: url(bird.png); }SVG图形遮罩效果 .mask-image {mask-image: url("data:image/svgxml,%3Csvg viewBox0 0 3232…

mysql 字符 1024个字符限制 cast转为varchar 不限制字符长度 最大字符长度 group_concat长度限制

设置group_concat的最大长度然后再运行 SET SESSION group_concat_max_len102400;

【算法基础:数据结构】2.2 字典树/前缀树 Trie

文章目录 知识点cpp结构体模板 模板例题835. Trie字符串统计❤️❤️❤️❤️❤️(重要!模板!)143. 最大异或对😭😭😭😭😭(Trie树的应用) 相关题目…

C# MVC 多图片上传预览

一.效果图: 开发框架:MVC,Layui 列表主界面这里就不展示了,可以去看看这篇文章:Layui项目实战,这里讲的是“上传Banner”界面功能: 其中包括,多文件上传,预览&#xff0c…

vue进阶-消息的订阅与发布

📖vue基础学习-组件 介绍了嵌套组件间父子组件通过 props 属性进行传参。子组件传递数据给父组件通过 $emit() 返回自定义事件,父组件调用自定义事件接收子组件返回参数。 📖vue进阶-vue-route 介绍了路由组件传参,两种方式&…

【conan】本地编译三方库,上传conan服务器

1.6 conan 远程已经编译好的库 conan中文博客: 三方库资源: github conan-io 本地查询 conan search Existing package recipes:b2/4.9.6 boost/1.71.0nolovr/stable bzip2/1.0.8 ceres-solver/2.0.0nolovr/stable eigen/3.3.7nolovr/stable eigen_c…

【软件测试】selenium中元素的定位

1.元素的定位 不管用那种方式,必须保证页面上该属性的唯一性 1.CSS 定位 CSS(Cascading Style Sheets)是一种语言,它被用来描述HTML 和XML 文档的表现。 CSS 使用选择器来为页面元素绑定属性。这些选择器可以被selenium 用作另外的定位策略CSS的获取可…

Go 工具链详解(三): 代码测试神器 go test

go test 作用 go test 是 Go 工具链中的一个命令,用于编译和运行按照要求编写的 Golang 测试代码,并生成测试报告。 要求将测试代码所在的文件命名为 *_test.go,如此命名的文件不会被 go build 命令编译,但是会被 go test 进行编…