首页 > 数据库 >redis的list类型基本操作

redis的list类型基本操作

时间:2022-10-01 18:00:42浏览次数:55  
标签:元素 list keytwo redis 列表 ------------------- 命令 key 基本操作

1、首先连上你的redis

以下一些命令很简单,或者执行命令后效果也无法体现的就没有进行截图展示

2、list相关操作
说明:redis的列表是简单的字符串列表,按照插入顺序排序。它的底层实际是个双向链表,对两端的操作性能很高。通过索引下标操作中间的元素性能较差。


-------------------左操作开始-------------------

将一个或多个值插入列表头部:lpush listkey v1 v2 v3
获取列表指定范围内的数据:lrange listkey 0 -1

说明:lrange listkey 0 -1命令的含义是,取得listkey的所有元素。

提示:lrange语法为:lrange key start stop。当stop大于key所存储的值的长度时,此命令会返回所有元素。不会返回多余的空数据。
start可以用负数。-1表示列表中的最后一个元素,-2表示倒数第二个元素,于是lrange listkey 0 2 = lrange listkey -3 -1

将一个值或多个值插入到已存在的列表头部:lpushx listkey v4 v5

提示:此命令执行,如果key不存在,将不会插入成功

移出并获取列表的第一个元素: lpop keyone


提示:如果lpop的操作key不存在时,将返回nil
6.2.0版本开始支持count参数,支持返回多个元素
当设置的count大于key中所剩值个数时,返回的就是key中剩余的值。通俗来讲就是:返回列表中所能提供的所有元素

移除列表元素:lrem keyone 1 v1
LREM的语法为LREM key count VALUE
count:要移除的key中value等于参数VALUE的个数。

count值的定义:
count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值。

VALUE:被比较的作为等于的值
LREM的返回值:返回的是等于VALUE值被删除的个数,【返回值 <= count】

提示:如果我的命令中count值=2,但是key中只有一个值等于VALUE,于是只被删除了一个元素,所以返回值为1
如果未找到与VALUE相等的值,将返回-1

获取列表长度:llen keyone

通过索引获取列表中的元素:lindex keytwo 0

提示:当keytwo中元素为3个时,lindex keytwo 0lindex keytwo -3是一样的效果

在列表的元素的前或后插入元素:linsert keytwo before t2 t1.5
以上命令的含义:在值t2的前面插入值t1.5

LINSERT的语法结构为:linsert key BEFORE|AFTER pivot element
pivot的含义:支点,基准的意思,linsert插入值时以pivot作为基准值进行判断插入位置
LINSERT的返回值:如果命令执行成功,返回插入操作完成之后,列表的长度。 如果没有找到指定元素 ,返回 -1 。 如果 key 不存在或为空列表,返回 0 。

通过索引设置列表元素的值:lset keytwo 0 t3seted
命令的含义:设置keytwo索引为0的元素为t3seted

LSET的语法为:lset key index element

让列表只保留指定区间内的元素:ltrim keytwo 0 2

LTRIM的语法为:ltrim key start stop

提示:ltrim keytwo 0 2ltrim keytwo -4 -2是等效的,-1代表最后一个元素,依次类推就行

-------------------左操作结束-------------------

-------------------右操作开始-------------------

从尾部放入元素:rpush keytwo t0

将一个或多个值插入到已经存在的列表尾部:rpushx keytwo t00 t000
类比lpushx命令

移出并获取列表最后一个元素:rpop keytwo

提示:6.2.0版本开始支持count参数,支持返回多个元素

移出列表的最后一个元素,并将该元素添加到另一个列表并返回:rpoplpush keytwo keytwo
命令含义:将keytwo的最后一个元素取出,头插入到keytwo中

RPOPLPUSH的语法为:rpoplpush source destination
source:原列表
destination:目的列表

-------------------右操作结束-------------------

-------------------阻塞原语开始-------------------

移出并获取列表的第一个元素,如果key不存在或为空列表,则阻塞,直到超时:blpop keyone keytwo 100
上述命令的含义:移出列表keyone中的第一个元素,如果keyone不存在或空列表,则执行keytwo列表,如果两个列表都为空,则等待超时

BLPOP的返回值:如果列表为空(超时后),返回一个 nil 。否则,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。
BLPOP的语法:blpop key [key ...] timeout
timeout超时时间:以秒为单位,如果设置为0,则表示无限期等待

移出并获取列表的最后一个元素,如果key不存在或为空列表,则阻塞,直到超时:brpop keyone keytwo 100

弹出列表的最后一个元素,将弹出的元素左插入到另一个列表中并返回它:brpoplpush keyone keyone 100

BRPOPLPUSH的语法为:brpoplpush source destination timeout
提示:与rpoplpush命令的区别在于,此命令可以阻塞。阻塞的含义就是,当阻塞期间你的客户端不能执行命令,只能等待超时。

-------------------阻塞原语结束-------------------

3.总结

1、列表的一些命令应该怎么记呢?本人的一些概括如下:
作为一个数据结构,而且是双向链表,它应该有的一些函数为:

  • 返回列表中的长度:对应LLEN命令
  • 从链表头部插入元素:对应LPUSH命令
  • 弹出链表的头部元素:对应LPOP命令
  • 从链表尾部插入元素:对应RPUSH命令
  • 弹出链表尾部元素:对应RPOP命令
  • 插入元素:对应LINSERT命令
  • 替换某个元素(或下标)的值:对应LSET命令
  • 删除某个元素(或下标)的值:对应LREM命令
  • 获取某个元素(或下标)的值:对应LINDEX命令

首先我们记住这些基础命令,然后我们再结合应用场景会用到一些高级命令,比如:
LRANGE:返回列表中某块区域的子列表
LTRIM:让列表只留下指定区间内到元素
RPOPLPUSH:弹出尾部元素插入到另一个列表的头部

标签:元素,list,keytwo,redis,列表,-------------------,命令,key,基本操作
From: https://www.cnblogs.com/szbm/p/16736073.html

相关文章

  • Oracle 19C 安装及基本操作
    Oracle19c安装包地址:https://pan.baidu.com/s/1CnbkJMLOvPN7rZNUEtttdg 提取码:p00sRedHat7.4安装包地址:https://pan.baidu.com/s/1gNg4B4L2bplkQj46ksyH7A 提取码......
  • redis.exceptions.AuthenticationError: Authentication required.报错解决办法
    报错...File"D:\UserData\PycharmProject\pythonProject\私有项目\gsCoWeChat\venv\lib\site-packages\redis\client.py",line1239,in<lambda>lambda:self.......
  • Java中队列和链表性能对比-ArrayList和LinkedList
    本文使用ArrayList和LinkedList,分别对比了队列链表的add,get的性能。 具体代码如下,可以直接运行importjava.util.ArrayList;importjava.util.LinkedList;importja......
  • 集合框架——LinkedList集合源码分析
    目录示例代码底层代码第1步(初始化集合)第2步(往集合中添加一个元素)第3步(往集合中添加第二个元素)第4步(往集合中添加第三个元素)LinkedList添加元素流程示意图第5步(删除集合中第......
  • MYSQL学习笔记之基本操作
    基本操作(1)登录MYSLQ步骤如下:①(win+R)--->cmd-->命令窗口--->输入"mysql-uroot-P端口号-p"②登录成功效果WelcometotheMySQLmonitor.Commandsendwith;or......
  • redis
    Redis简介说明Redis(RemoteDictionaryServer远程字典服务)是一个遵循BSDMIT开源协议的高性能的NoSQL.Redis基于ANSIC语言语言)编写的key-value数据库,是意大利的Sa......
  • win10安装redis
    redis安装新手教程win10​ REmoteDIctionaryServer(Redis)是一个由SalvatoreSanfilippo写的key-value存储系统。​ Redis是一个开源的使用ANSIC语言编写、遵守BSD......
  • 如何加入linux开源项目-GNOME Project Listing
    GNOMEProjectListing找到项目官网找到项目创始人email联系不过通常都可以通过网站直接去的联系然后提交你的工作成果或者提交bug,提交你的补丁之类。​......
  • Apollo 中配置String、Map和List和默认值
    摘要:在Apollo中,配置String、Map和List等类型的信息,同时设置默认值。综述  随着业务需求的变更,需要在Apollo中配置一个Map<String,List>类型的变量用于标志客户信息,诸......
  • 【Redis】五大常见的数据类型之 Hash
    前言我们都知道Redis提供了丰富的数据类型,常见的有五种:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)。今天我们就来详细的聊聊Redis这五大常见的数据类型之一​......