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

目录

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的元素生效。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【STL】List容器介绍+相关练习题详细版本

List 1.List介绍2.使用注意3.list与vector的对比4.练习题 1.List介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,…

索引常见面试题

面试中,MySQL 索引相关的问题基本都是一系列问题,都是先从索引的基本原理,再到索引的使用场景,比如: 索引底层使用了什么数据结构和算法?为什么 MySQL InnoDB 选择 Btree 作为索引的数据结构?什…

5_springboot_shiro_jwt_多端认证鉴权_禁用Cookie

1. Cookie是什么 ​ Cookie是一种在客户端(通常是用户的Web浏览器)和服务器之间进行状态管理的技术。当用户访问Web服务器时,服务器可以向用户的浏览器发送一个名为Cookie的小数据块。浏览器会将这个Cookie存储在客户端,为这个Co…

30.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-数据搜索功能

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:29.数据推测功能…

从爬楼梯到斐波那契数列:解密数学之美

题目描述 我们来看看力扣的一道经典问题70. 爬楼梯 递归 假设n级台阶有climbStairs(n)种方法爬到楼梯顶。如果有n级台阶,如果第一次往上爬1级台阶,就会剩下n-1级台阶,这n-1级台阶就有climbStairs(n-1)种方法爬到楼梯顶;如果第一…

【Week Y2】使用自己的数据集训练YOLO-v5s

Y2-使用自己的数据集训练YOLO-v5s 零、遇到的问题汇总(1)遇到git的import error(2)Error:Dataset not found(3)Error:删除中文后,训练图片路径不存在 一、.xml文件里保存…

【MySQL】MySQL视图

文章目录 一、视图的基本使用1.创建视图2.修改了视图,对基表数据有影响3.修改了基表,对视图有影响4.删除视图 二、视图规则和限制 一、视图的基本使用 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称…

Vulnhub - Jarbas

希望和各位大佬一起学习,如果文章内容有错请多多指正,谢谢! 个人博客链接:CH4SER的个人BLOG – Welcome To Ch4sers Blog Jarbas 靶机下载地址:https://www.vulnhub.com/entry/jarbas-1,232/ 0x01 信息收集 Nmap…

机器学习/深度学习绘图模板(PPT)

机器学习/深度学习绘图模板(PPT) 34页PPT,包含40图片模板 部分标注了论文出处 点击:我的B站工房 购买,粉丝专享价4.9元,线上交付,支付后自动发货。

Android Studio实现内容丰富的安卓民宿酒店预订平台

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看民宿 3.民宿预订 4.民宿预订支付, 5.支付订单 6.评论管…

MySQL的基本概念

一.MySQL概念: 你可以把MySQL想象成一个大杂货店,里面有很多货架,每个货架上摆放着不同种类的商品,MySQLMySQ就像是这个杂货店的后台库存管理系统。 1.表格(货架):每个货架上摆放商品&#xff0…

Linux入门级别命令(下载远程连接工具)

$pwd(当前所在位置,显示打印当前工作目录)$mkdir 创建目录$cd dir 换个位置(进入某一个目录)$cd 什么都不加回到最开始的目录$ls当前目录位置下的文件信息(列出当前所在位置下有哪些东西)$mv移动…

Visual Studio 2013 - 调试模式下根据内存地址查看内存

Visual Studio 2013 - 调试模式下根据内存地址查看内存 1. 查看内存References 1. 查看内存 调试 -> 窗口 -> 内存 -> 内存1-4 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

全栈的自我修养 ———— 让uniapp开发更加舒服!!(与别的博主思路不一样,小编这里只讲实用的,直提重点!)

小编是web的,然后现在开始接手微信小程序,有很多不习惯的的地方,经过一段时间的使用,部分得到了妥善的解决方法 一、用vscode开发小程序二、组件库的选择三、注意 一、用vscode开发小程序 发现用Hbuilder开发小程序有很多不习惯的…

企业专业化管理金字塔:技能进阶与案例分析

在纷繁复杂的企业管理领域中,一套行之有效的管理技能体系对于企业的稳健发展至关重要。本文将深入探讨企业专业化管理金字塔的五个层次:基本的管理技能、业务操作管理技能、组织管理技能、组织开发技能以及管理转变技能,并结合实际案例&#…

默写单词cpp(初学者版本)

笔摔坏了直接使用版:yum:仔细学习版:yum:1.直接使用版:yum:(文件使用规范)(1)文件(2)使用规范 2.仔细学习版。将会讲各个函数的功能和细节。今天太晚了,明天再写。 笔摔坏了 在一个阳光明媚的早晨,我愉快的奋笔疾书,抄…

Gradle v8.5 笔记 - 从入门到进阶(基于 Kotlin DSL)

目录 一、前置说明 二、Gradle 启动! 2.1、安装 2.2、初始化项目 2.3、gradle 项目目录介绍 2.4、Gradle 项目下载慢?(万能解决办法) 2.5、Gradle 常用命令 2.6、项目构建流程 2.7、设置文件(settings.gradle.…

docker入门(三)—— 安装docker

docker 安装 环境要求 本次使用的是云服务器,版本是 centos,要求版本在3.10以上 [rootiZbp15293q8kgzhur7n6kvZ /]# uname -r 3.10.0-1160.108.1.el7.x86_64 [rootiZbp15293q8kgzhur7n6kvZ /]# cat /etc/os-release NAME"CentOS Linux" VE…

数据容器-list-Python

师从黑马程序员 列表的定义语法 注:列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套 my_list["itheima","chengxuyuan","python"] print(my_list) print(type(my_list))#元素类型不受限 my_list[&…

架构扩展性

架构扩展性:应用扩展 数据扩展 组织扩展 流程扩展 核心方法论–扩展立方体: x轴:无脑克隆 y轴:功能分割z轴:客户分割扩展立方体在应用扩展的应用: x轴:横向克隆 对于无状态的应用,多…