redis学习-List类型相关命令以及特殊情况分析

news2024/10/6 14:30:31

目录

1. lpush key value1 value2 ...  

 2. lrange key start end

 3. lpop key num

 4. rpush key value1 value2 ...

 5. rpop key num

 6. lindex key index

 7. llen key

 8. lrem key num value

 9. rpoplpush key1 key2

 10. lset key index value

 11. linsert key before/after value newvalue


        接下来的所有类型的操作中,-1都代表最后

        List采用链表的存储结构,可以将List当做栈或队列来使用

1. lpush key value1 value2 ...  

        List类型操作,用于将所有的值从左端插入到一个List中,相当于入栈,最后一个元素的编号为0(后进先出,所以最后一个元素就是栈顶元素,编号为0)。执行结束后返回list中元素的个数。

2. lrange key start end

        获取一个List中部分区间的值,闭区间,要注意start不能大于end,-1除外,因为-1代表末尾元素。获取一个List的所有元素就是lrange list 0 -1。

3. lpop key num

        从编号为0的元素开始取出一个List中指定数量的元素,并按顺序返回取出的元素;如果不加num则默认取出1个元素,也就表示取出头部元素;当所有元素被取出时该List就不存在了。执行结束后按照顺序返回所弹出的元素。

4. rpush key value1 value2 ...

        用于将所有的值从右端插入到一个List中,相当于入队,第一个元素编号为0。执行结束后返回list中元素的个数。

5. rpop key num

        从最后一个元素开始取出一个List中指定数量的元素,并按顺序返回取出的元素;如果不加num则默认表示取出一个元素,也就是取出尾部元素;当所有元素被取出时该List就不存在了。执行结束后按照顺序返回所弹出的元素。

        通过一个混合使用的例子方便理解lpush、lpop、rpush、rpop:

6. lindex key index

        获取指定List的指定序号的元素。

7. llen key

        获取指定List的长度。

8. lrem key num value

        从第一个元素开始移除一个List中指定数量的指定value的元素,返回移除元素的数量(注意,这里的第一个元素是实际存储的第一个元素,而不是输入的第一个元素,具体要看是lpush还是rpush)。

        lpush:

        rpush: 

         当移除的list不存在或者移除的元素不存在时,会返回0代表移除了0个元素:

9. rpoplpush key1 key2

        从key1的List中取出最后一个元素并放到key2的List的头部,当key2不存在时则会创建一个;key1和key2可以相同,代表将末尾元素移到头部。返回值则是移动的元素。

        当key1(源list)不存在时,则会返回nil:

10. lset key index value

        修改指定List的指定位置的值,仅当key存在且index位置有值时才能生效。

11. linsert key before/after value newvalue

        在一个List的指定value的前面/后面插入一个值为newvalue的元素;当value不存在时命令无效,且仅对从头部开始的第一个值为value的元素生效。

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

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

相关文章

算法---二分查找练习-1(在排序数组中查找元素的第一个和最后一个位置)

在排序数组中查找元素的第一个和最后一个位置 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址:点这里 2. 讲解算法原理 算法原理如下: 首先,判断数组是否为空,如果为空,则直接返回{-1, -1}表示没有找到目…

深入解析JVM加载机制

一、背景 Java代码被编译器变成生成Class字节码,但字节码仅是一个特殊的二进制文件,无法直接使用。因此,都需要放到JVM系统中执行,将Class字节码文件放入到JVM的过程,简称类加载。 二、整体流程 三、阶段逻辑分析 3…

PostgreSQL中vacuum 物理文件truncate发生的条件

与我联系: 微信公众号:数据库杂记 个人微信: iiihero 我是iihero. 也可以叫我Sean. iiheroCSDN(https://blog.csdn.net/iihero) Sean墨天轮 (https://www.modb.pro/u/16258) 数据库领域的资深爱好者一枚。 水木早期数据库论坛发起人 db2smth就是俺&am…

世界第一个AI软件工程师问世!

2024年3月13日,科技公司Cognition推出了世界上第一位人工智能软件工程师Devin AI。这项创新有望利用人工智能编码和机器学习的力量加快发展。Devin AI不仅仅是帮助;它是一个成熟的队友,发挥智能编码自动化和自主人工智能编码的魔力&#xff0…

Spring Bean的生命周期流程

前言 Java 中的公共类称之为Java Bean,而 Spring 中的 Bean 指的是将对象的生命周期,交给Spring IoC 容器来管理的对象。所以 Spring 中的 Bean 对象在使用时,无需通过 new 来创建对象,只需要通过 DI(依赖注入&#x…

数字化转型导师坚鹏:人工智能在金融机构数字化转型中的应用

人工智能在金融机构数字化转型中的应用 课程背景: 金融机构数字化转型离不开人工智能,在金融机构数字化转型中,人工智能起到至关重要的作用,很多机构存在以下问题: 不清楚人工智能产业对我们有什么影响?…

【数据可信流通,从运维信任到技术信任】

1. 数据可信流通体系 信任的基石: 身份的可确认利益可依赖能力有预期行为有后果 2.内循环——>外循环 内循环:数据持有方在自己的运维安全域内队自己的数据使用和安全拥有全责。 外循环:数据要素在离开持有方安全域后,持有方…

函数-Python

师从黑马程序员 函数初体验 str1"asdf" str2"qewrew" str3"rtyuio" def my_len(data):count0for i in data:count1print(f"字符串{data}的长度是{count}")my_len(str1) my_len(str2) my_len(str3) 函数的定义 函数的调用 函数名&a…

12_Linux内核结构

Linux内核结构 1.内核的主要组成部分 Linux 内核主要的 5 个部分:进程调度、内存管理、虚拟文件系统、网络接口、进程通信。在系统移植的时候,它们是内核的基本元素,这 5 个部分之间的关系,如图所示: 进程调度&#…

检查约束

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 检查约束 检查约束指的是在数据列上设置一些过滤条件,当过滤条件满足的时候才可以进行保存,如果不满足则出现错误。例如,设置年龄的信息…

微服务:高并发带来的问题的容错方案

1.相关脚本(陈天狼) 启动nacos客户端: startup.cmd -m standalone 启动sentinel控制台: # 直接使⽤jar命令启动项⽬(控制台本身是⼀个SpringBoot项⽬) java -Dserver.port8080 -Dcsp.sentinel.dashboard.serverlocalhost:808…

蓝桥杯冲刺_二分(正在补题)

二分一定要是单调队列&#xff0c;单调才具有二段性 特征 最小值最大化 最大值最小化 15 届蓝桥杯 14 天省赛冲刺营 1 期 - M次方根 - 蓝桥云课 (lanqiao.cn) #include <bits/stdc.h> using namespace std;double n,l,r,mid; double eps1e-8;bool check(double mid,i…

JavaSE综合练习-图书系统1.0

Main import book.BookList; import user.AdminUser; import user.NormalUser; import user.User; import java.util.Scanner;//程序入口函数 public class Main {public static User login(){Scanner scannernew Scanner(System.in);System.out.println("请输入你的姓名…

HTML表格(HTML 表格的使用,收藏这一篇就够了)

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 今天聊聊 table。HTML <table> 元素用于创建表格&#xff0c;它是一种将数据按行和列组织排列的结构&#xff0c;用于在网页中呈现复杂的数据集。HTML 表格具有以下 2 种主要用途&#x…

java方法的引用传递和值传递

1、方法的值参数传递 下面代码&#xff0c;它会在控制台输出什么&#xff1f; public class ArrayTest {public static void main(String[] args) {int number 100;System.out.println(number);change(number);System.out.println(number);}public static void change(int n…

Qt学习--继承(并以分文件实现)

基类 & 派生类 一个类可以派生自多个类&#xff0c;这意味着&#xff0c;它可以从多个基类继承数据和函数。定义一个派生类&#xff0c;我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名。 总结&#xff1a;简单来说&#xff0c;父类有的&#xff0c;子…

【Paper Reading】6.RLHF-V 提出用RLHF的1.4k的数据微调显著降低MLLM的虚幻问题

分类 内容 论文题目 RLHF-V: Towards Trustworthy MLLMs via Behavior Alignment from Fine-grained Correctional Human Feedback 作者 作者团队&#xff1a;由来自清华大学和新加坡国立大学的研究者组成&#xff0c;包括Tianyu Yu, Yuan Yao, Haoye Zhang, Taiwen He, Y…

[SaaS] 淘宝设计AI

“淘宝设计AI” 让国际大牌造世界双11超级品牌 超级发布https://mp.weixin.qq.com/s/xFVDARQHxlweKAYG91DtYw下面是一个完整的品牌营销海报设计流程&#xff0c;AIGC起到了巨大作用&#xff0c;但是仍然很难去一步解决这个问题&#xff0c;还是逐步修改的一个过程。 Midjouner…

java 面向对象--equals方法

Object 类的使用 类 java.lang.Object是类层次结构的根类&#xff0c;即所有其它类的父类。每个类都使用 Object 作为超类。 Object类型的变量与除Object以外的任意引用数据类型的对象都存在多态引用 method(Object obj){…} //可以接收任何类作为其参数 Person o new Person…

【NTN 卫星通信】 TN和多NTN配合的应用场景

1 场景描述 此场景描述了农村环境&#xff0c;其中MNO (运营商TerrA)仅在城市附近提供本地地面覆盖&#xff0c;而MNO (SatA)提供广泛的NTN覆盖。SatA使用GSO轨道和NGSO轨道上的卫星。SatA与TerrA有漫游协议&#xff0c;允许:   所有TerrA用户的连接&#xff0c;当这些用户不…