Redis系列-存储篇list主要操作命令小结

在总结list之前,先要弄明白几个跟list相关的概念:

列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出。

表头元素:列表最左端第一个元素。

表尾元素:列表最右端的最后一个元素。不包含任何元素的列表成为空列表。

1)新增

a)lpush

语法:lpush key value[value]

解释:把一个或多个元素插入表头。如果是多个value时,按照从左到右的次序插。返回插入元素的个数

[root@xsf001 ~]# redis-cli
redis 127.0.0.1:6379> lpush lst.user zhangsan #插入一个元素
(integer) 1
redis 127.0.0.1:6379> lpush lst.user zhangsan lisi #插入多个元素,list中允许插入重复的元素
(integer) 3

b)lpushx

语法:lpushx key value

解释:插入一个表头元素,当且仅当列表key存在时,才能插入。返回列表中元素的个数

redis 127.0.0.1:6379> lpushx lst.user wangwu   #列表存在
(integer) 4
redis 127.0.0.1:6379> lpushx lst.tech wangwu #列表不存在,不插入
(integer) 0

c)rpush

语法:rpush key [value]

解释:将一个或多个值插入到队列的队尾。多值时,从左到右依次添加。返回列表中元素个数

redis 127.0.0.1:6379> rpush lst.user ls005     #列表存在
(integer) 5
redis 127.0.0.1:6379> rpush lst.tech tec01 tec02 tec03 #列表不存在
(integer) 3

d) rpushx

语法:rpushx key value

解释:讲值插入到列表队尾,当且仅当列表key存在时,才添加。返回列表元素个数

redis 127.0.0.1:6379> rpushx lst.tech tec04  #key 存在
(integer) 4
redis 127.0.0.1:6379> rpushx lst.sub englist #key 不存在
(integer) 0

e)linsert

语法:linsert key before|after pivot value

解释:将值插入到pivot的前面或后面。返回列表元素个数。如果参照点pivot不存在不插入。如果有多个pivot,以离表头最近的为准

redis 127.0.0.1:6379> linsert lst.tech after tec04 tec06  #后面插
(integer) 5
redis 127.0.0.1:6379> linsert lst.tech before tec06 tec05 #前面插
(integer) 6
redis 127.0.0.1:6379> linsert lst.tech before tec08 tec07 #参照点不存在,不插
(integer) -1
redis 127.0.0.1:6379> linsert lst.user after zhangsan zhangsan01 #列表中有多个pivot,以从左到右的第一个为准
(integer) 6

2)查询

a)lindex

语法:lindex key index

解释:通过索引index获取列表的元素。 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推

redis 127.0.0.1:6379> lindex lst.user 0  #表头
"wangwu"
redis 127.0.0.1:6379> lindex lst.user -1 #表尾
"ls005"
redis 127.0.0.1:6379> lindex lst.user 2 #第三个元素
"zhangsan"
redis 127.0.0.1:6379> lindex lst.user -2 #倒数第二个元素
"zhangsan"

b)lrange

语法:lrange key start stop  

解释:获取指定开始和结束范围的一些列元素。0:表头,-1:表尾。如果stop指定的元素在start的左边,返回空列表

redis 127.0.0.1:6379> lrange lst.user 0 -1 #返回所有
1) "wangwu"
2) "lisi"
3) "zhangsan"
4) "zhangsan01"
5) "zhangsan"
6) "ls005"
redis 127.0.0.1:6379> lrange lst.user -1 0 #返回空
(empty list or set)
redis 127.0.0.1:6379> lrange lst.user 1 2 #返回多个
1) "lisi"
2) "zhangsan"
redis 127.0.0.1:6379> lrange lst.user 1 1 #返回一个元素
1) "lisi"

3)修改

lset

语法:lset key index value

解释:设置列表指定索引的值,如果指定索引不存在则报错

redis 127.0.0.1:6379> lset lst.user 2 zhangsan1  #设置第三个元素为zhangsan1
OK
redis 127.0.0.1:6379> lrange lst.user 0 -1
1) "wangwu"
2) "lisi"
3) "zhangsan1"
4) "zhangsan01"
5) "zhangsan"
6) "ls005"
redis 127.0.0.1:6379> lset lst.user 6 ls006 #指定索引不存在
(error) ERR index out of range

4)删除

a)ltrim

语法:ltrim key start stop

解释:保留指定区域的元素,其他元素全部删除

redis 127.0.0.1:6379> ltrim lst.user 0 -2
OK
redis 127.0.0.1:6379> lrange lst.user 0 -1
1) "wangwu"
2) "lisi"
3) "zhangsan1"
4) "zhangsan01"
5) "zhangsan"

b)lrem

语法:lrem key count value

解释:移除等于value的元素,当count>0时,从表头开始查找,移除count个;当count=0时,从表头开始查找,移除所有等于value的;当count<0时,从表尾开始查找,移除|count| 个。

redis 127.0.0.1:6379> lrange lst.user 0 -1
1) "zhangsan"
2) "wangwu"
3) "lisi"
4) "zhangsan1"
5) "zhangsan01"
6) "zhangsan"
7) "lisi"
8) "zhangsan"
9) "lisi"
10) "zhangsan"
redis 127.0.0.1:6379> lrem lst.user 2 zhangsan #移除前两个zhangsan
(integer) 2
redis 127.0.0.1:6379> lrange lst.user 0 -1
1) "wangwu"
2) "lisi"
3) "zhangsan1"
4) "zhangsan01"
5) "lisi"
6) "zhangsan"
7) "lisi"
8) "zhangsan"
redis 127.0.0.1:6379> lrange lst.user -1 zhangsan #移除最后一个zhangsan
(empty list or set)
redis 127.0.0.1:6379> lrange lst.user 0 -1
1) "wangwu"
2) "lisi"
3) "zhangsan1"
4) "zhangsan01"
5) "lisi"
6) "zhangsan"
7) "lisi"
redis 127.0.0.1:6379> lrem lst.user 0 lisi #移除所有lisi
(integer) 3
redis 127.0.0.1:6379> lrange lst.user 0 -1
1) "wangwu"
2) "zhangsan1"
3) "zhangsan01"
4) "zhangsan"
redis 127.0.0.1:6379>

c)rpop

语法:rpop key

解释:移除并返回表尾元素

redis 127.0.0.1:6379> rpop lst.user
"zhangsan"

d)lpop

语法:lpop key

解释:移除并返回表尾元素

redis 127.0.0.1:6379> lpop lst.user
"wangwu"

5)其他

a)llen

语法:llen key

解释:获取列表长度

redis 127.0.0.1:6379> llen lst.user
(integer) 2

参考:http://redis.io/commands#list

Redis系列-存储篇list主要操作命令的更多相关文章

  1. Redis系列-存储篇string主要操作命令

    Redis系列-存储篇string主要操作命令 通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简 ...

  2. Redis系列-存储篇sorted set主要操作命令

    Redis系列-存储篇sorted set主要操作函数小结 redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sort ...

  3. Redis系列-存储篇hash主要操作函数小结

    阳光透过玻璃,洒在身上,一杯暖茶在手,说不尽的安逸自得,让我有种想再写篇blog的冲动.上篇主要谈了string,这里谈谈hash吧!hash是一些列key value(field value)的映射 ...

  4. Redis系列-存储篇string主要操作函数小结

    通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简单且常用的string开始. 1.新增 a)se ...

  5. Redis系列-存储篇sorted set主要操作函数小结

    redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sorted set的常用函数: 1)insert a)  zadd ...

  6. Redis系列-存储篇set主要操作函数小结

    最近,总是以“太忙“为借口,很久没有blog了,凡事贵在恒,希望我能够坚持不懈,毕竟在blog的时候,也能提升自己.废话不说了,直奔主题”set“ redis set 是string类型对象的无序集合 ...

  7. Redis系列-存储篇list主要操作函数小结

    在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素:列表最左端第一个元素. 表尾元素:列表最右端的 ...

  8. Redis系列-存储篇list主要操作函数小结(转)

    在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素:列表最左端第一个元素. 表尾元素:列表最右端的 ...

  9. Redis系列-存储hash主要操作命令

    Redis系列-存储篇hash主要操作函数小结 hash是一些列key value(field value)的映射表.常常用其存储一些对象实例.相对于把一个对象的各个字段存储为string,存储为ha ...

随机推荐

  1. TypeScript & as & Type Assertion

    TypeScript & as & Type Assertion Type Assertion (as) That is not vanilla JavaScript, it is T ...

  2. free online business card generator

    free online business card generator 免费在线名片生成器 https://www.logaster.cn/business-card/ https://www.chu ...

  3. USDN代币的特点

    USDN是NGK公链发行的算法型稳定币,采用智能合约发行,通过智能合约的透明化,能够让市场USND持有者获得算法稳定的背书.USDN是一种锚定全球通用的代币,更是连接全球数字经济的通用数字代币.USD ...

  4. 2. Vue语法--插值操作&动态绑定属性 详解

    目录 1. 设置vue模板 2. vue语法--插值操作 3. 动态绑定属性--v-bind 一. 设置vue模板 我们经常新建一个vue项目的时候, 会写如下的一段代码 <!DOCTYPE h ...

  5. C++算法代码——和为给定数

    题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?cid=1376&pid=0 题目描述 给出若干个整数,询问其中是否有一对数的和等于给 ...

  6. 020_CSS3

    目录 如何学习CSS 什么是CSS 发展史 快速入门 css的优势 三种CSS导入方式 拓展:外部样式两种写法 选择器 基本选择器 层次选择器 结构伪类选择器 属性选择器 美化网页元素 为什么要美化网 ...

  7. 从微信小程序到鸿蒙js开发【15】——JS调用Java

    鸿蒙入门指南,小白速来!0基础学习路线分享,高效学习方法,重点答疑解惑--->[课程入口] 目录:1.新建一个Service Ability2.完善代码逻辑3.JS端远程调用4.<从微信小 ...

  8. sql where 1=1 的详细解释

    原文来自:https://blog.csdn.net/zc474235918/article/details/50544484 看一下这两个句子: select * from user select ...

  9. Spirng 循环依赖报错:Requested bean is currently in creation: Is there an unresolvable circular reference?

    1:前言 最近在项目中遇到了一次循环依赖报错的问题,虽然解决的很快,但是有些不明白的地方,特此记录. 在此我把 bean 的结构和 注入方式单独拎出来进行演示 1.1:报错提示 1.2:错误日志 Ex ...

  10. Spring-03 依赖注入(DI)

    Spring-03 依赖注入(DI) 依赖注入(DI) 依赖注入(Dependency Injection,DI). 依赖 : 指Bean对象的创建依赖于容器,Bean对象的依赖资源. 注入 : 指B ...