1. list列表类型的操作

1.1. lpush/rpush key value [value ...] 链表的头部(左侧)或尾部(右侧)插入值

语法:lpush key value [value ...]

作用:把值插入到列表左侧

语法:rpush key value [value ...]

作用:把值插入到列表右侧

返回值:返回列表的长度

例:

127.0.0.1:6379> lpush animal cat

(integer) 1

127.0.0.1:6379> lpush animal dog

(integer) 2

127.0.0.1:6379> rpush animal monkey

(integer) 3

1.2. lpop/rpop key

语法:lpop key

语法:rpop key

作用:返回并删除列表元素

返回值:删除的元素

例:

127.0.0.1:6379> rpush word apple banana cat dog

(integer) 4

127.0.0.1:6379> lrange word 0 -1

1) "apple"

2) "banana"

3) "cat"

4) "dog"

127.0.0.1:6379> lpop word

"apple"

127.0.0.1:6379> lrange word 0 -1

1) "banana"

2) "cat"

3) "dog"

127.0.0.1:6379> rpop word

"dog"

127.0.0.1:6379> lrange word 0 -1

1) "banana"

2) "cat"

1.3. lrange key start stop

语法:lrange key start stop

作用:返回列表中[start,stop]中的元素

注:左侧从0开始;右侧从-1开始

例:查看列表中所有的元素

127.0.0.1:6379> lrange animal 0 -1

1) "dog"

2) "cat"

3) "monkey"

127.0.0.1:6379> lpush num 1 2 3 4

(integer) 4

127.0.0.1:6379> lrange num 0 -1

1) "4"

2) "3"

3) "2"

4) "1"

127.0.0.1:6379> lrange num 2 3

1) "2"

2) "1"

127.0.0.1:6379> lrange num -2 3

1) "2"

2) "1"

127.0.0.1:6379> lrange num -1 -3   #

(empty list or set)

127.0.0.1:6379> lrange num -3 -1

1) "3"

2) "2"

3) "1"

1.4. lrem key count value

语法:lrem key count value

作用:从key列表中删除value值(从左到右)

注:删除count的绝对值个value后结束

Count>0 从左侧删除

Count<0 从右侧删除

例:

127.0.0.1:6379> lpush answer a b c a b d a

(integer) 7

127.0.0.1:6379> lrange answer 0 -1

1) "a"

2) "b"

3) "c"

4) "a"

5) "b"

6) "d"

7) "a"

127.0.0.1:6379> lrem answer 1 b  #删除第1个b

(integer) 1

127.0.0.1:6379> lrange answer 0 -1

1) "a"

2) "c"

3) "a"

4) "b"

5) "d"

6) "a"

127.0.0.1:6379> lrem answer -2 a  #删除最后2个a

(integer) 2

127.0.0.1:6379> lrange answer 0 -1

1) "a"

2) "c"

3) "b"

4) "d"

1.5. Itrim key start stop

语法:ltrim key start stop

作用:剪切key对应的列表,切[start,stop]一段,并把该段重新赋给key

例:

127.0.0.1:6379> rpush word apple banana cat dog

(integer) 4

127.0.0.1:6379> lrange word 0 -1

1) "apple"

2) "banana"

3) "cat"

4) "dog"

127.0.0.1:6379> ltrim word 1 3

OK

127.0.0.1:6379> lrange word 0 -1

1) "banana"

2) "cat"

3) "dog"

127.0.0.1:6379> rpush word a b c d e f

(integer) 6

127.0.0.1:6379> ltrim word 1 -2

OK

127.0.0.1:6379> lrange word 0 -1

1) "b"

2) "c"

3) "d"

4) "e"

127.0.0.1:6379> ltrim word -1 2

OK

127.0.0.1:6379> lrange word 0 -1   #

(empty list or set)

1.6. lindex key index

语法:lindex key index

作用:返回Index索引上的值

例:

127.0.0.1:6379> rpush fruit apple banana ogange pear peach

(integer) 5

127.0.0.1:6379> lindex fruit 0

"apple"

127.0.0.1:6379> lindex fruit 1

"banana"

127.0.0.1:6379> lindex fruit -1

"peach"

1.7. llen key

语法:llen key

作用:计算列表的元素个数

例:

127.0.0.1:6379> rpush fruit apple banana ogange pear peach

(integer) 5

127.0.0.1:6379> llen fruit

(integer) 5

1.8. linsert key BEFORE|AFTER pivot value

语法:linsert key BEFORE|AFTER pivot value

作用:在key列表中寻找pivot,并在pivot值之前/之后插入value

插入成功返回列表的长度

如果找不到pivot,插入失败,返回-1

注:一旦找到一个pivot后,命令就结束了,因此不会插入多个value

例:

127.0.0.1:6379> rpush num 1 3 5 7

(integer) 4

127.0.0.1:6379> lrange num 0 -1

1) "1"

2) "3"

3) "5"

4) "7"

127.0.0.1:6379> linsert num before 3 2

(integer) 5

127.0.0.1:6379> lrange num 0 -1

1) "1"

2) "2"

3) "3"

4) "5"

5) "7"

127.0.0.1:6379> linsert num after 7 8

(integer) 6

127.0.0.1:6379> lrange num 0 -1

1) "1"

2) "2"

3) "3"

4) "5"

5) "7"

6) "8"

127.0.0.1:6379> linsert num after 20 21

(integer) -1

127.0.0.1:6379> linsert num after 8 8

(integer) 7

127.0.0.1:6379> lrange num 0 -1

1) "1"

2) "2"

3) "3"

4) "5"

5) "7"

6) "8"

7) "8"

127.0.0.1:6379> linsert num after 8 10

(integer) 8

127.0.0.1:6379> lrange num 0 -1

1) "1"

2) "2"

3) "3"

4) "5"

5) "7"

6) "8"

7) "10"

8) "8"

1.9. rpoplpush source destination

语法:rpoplpush source destination

作用:把source的尾部(右侧)拿出来,放在desinationt的头部(左侧),并返回该单元值

场景:task+bak 双列表完成安全队列

业务逻辑:

rpoplpush task bak

接收返回值,并做业务处理

如果成功,rpop bak清除任务,如果不成功,下次从bak表里取任务

注:此命令实现的功能,用rpop、lpush两个命令也能实现,但是此命令是一个原子操作,如果用两个命令来实现不够原子性(如:rpop成功,lpush失败就没有rpoplpush更安全)

127.0.0.1:6379> rpush task a b c d

(integer) 4

127.0.0.1:6379> rpoplpush task job

"d"

127.0.0.1:6379> lrange task 0 -1

1) "a"

2) "b"

3) "c"

127.0.0.1:6379> lrange job 0 -1

1) "d"

redis:list列表类型的操作的更多相关文章

  1. redis数据类型-列表类型

    列表类型 列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段. 列表类型内部是使用双向链表(double linked list)实现的,所以向 ...

  2. Redis之列表类型命令

    Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967 ...

  3. redis:set集合类型的操作(无序集合)

    1. set集合类型的操作(无序集合) 集合具有无序性(没有顺序).确定性(描述是确定的).唯一性(没有重复的元素) 1.1. sadd key member [member ...] 语法:sadd ...

  4. 三:redis的List类型相关操作

    </pre><pre name="code" class="php" style="font-size: 14px;"&g ...

  5. redis:string字符串类型的操作

    1. string字符串类型的操作: 1.1. set 设置单个值 语法:set key value [EX seconds] [PX milliseconds] [NX|XX] 注: EX seco ...

  6. [redis] redis 对string类型数据操作

    package com.xwolf.java.redis; import org.junit.Before; import org.junit.Test; import redis.clients.j ...

  7. redis之(六)redis的列表类型的命令

    [一]向列表两端添加元素 -->命令:LPUSH key value [value ...] -->向列表的左侧添加元素,返回值表示增加元素后列表的长度 -->命令:RPUSH ke ...

  8. 二:redis 的hash类型相关操作

    =====================二种:hash类型================== 介绍:redis -> hash是一个string类型的field和value的映射表 hash ...

  9. 一:redis 的string类型 - 相关操作

    *redisclient使用: =============一类:string的方法================ 介绍:string是redis的最简单类型,一个key相应一个value,strin ...

随机推荐

  1. .Net(C#)用正则表达式清除HTML标签(包括script和style),保留纯本文(UEdit中编写的内容上传到数据库)

    去官网下载,本Demo用的MVC模式 下载地址:http://ueditor.baidu.com/website/download.html 加入文件夹中的结构: 引入了函数公式的图标: @{ Vie ...

  2. (6).NET CORE微服务 Micro-Service ---- AOP框架

    AOP 框架基础 要求懂的知识:AOP.Filter.反射(Attribute). 如果直接使用 Polly,那么就会造成业务代码中混杂大量的业务无关代码.我们使用 AOP (如果不了解 AOP,请自 ...

  3. BZOJ 1706

    题解: 倍增+floyd 首先这题比较容易想到是把每个点拆点做dij 但是这样复杂度是knlogn的 这道题的k较大,所以不行 我们考虑到每走一步,其实就是在进行一次floyd 而这个可以看成矩阵乘法 ...

  4. 原 HTML5 requestFullScreen&exitFullscreen全屏兼容方案

                         摘要: html5 video全屏实现方式 首先来说,这个标题具有误导性,但这样设置改标题也是主要因为video使用的比较多 在html5中,全屏方法可以适用 ...

  5. go-关于指针和地址

    经常会见到: p . *p , &p 三个符号  p是一个指针变量的名字,表示此指针变量指向的内存地址,如果使用%p来输出的话,它将是一个16进制数. 而*p表示此指针指向的内存地址中存放的内 ...

  6. Jenkins.war包构建Jenkins平台

    [root@jenkins ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo [roo ...

  7. OSPF协议之详细图解

    OSPF是一种基于SPF算法的链路状态路由协议. 上图是在一个OSPF区域里面添入一台新的路由器的时候,OSPF协议的工作过程,如果你能非常详细的叙述出这张图的话,基本上OSPF协议的工作过程你就掌握 ...

  8. selenium 常见面试题以及答案

    1.怎么 判断元素是否存在? 判断元素是否存在和是否出现不同, 判断是否存在意味着如果这个元素压根就不存在, 就会抛出NoSuchElementException 这样就可以使用try catch,如 ...

  9. mySql版本的相关问题:com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver

    Mysql版本的相关问题:com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver 1. 在使用mysql时,控制台日志报错如下: Loading class `c ...

  10. Linux下C语言进程通讯编程

    代码: #include <stdio.h> #include <stdlib.h> #include <sys/shm.h> /*************基本的函 ...