Redis命令学习—List(列表)

本文参考:http://redisdoc.com/list/index.html

BLPOP

BLPOP key[key ...] timeout:BLPOP是列表的阻塞式(blocking)弹出原语。是LPOP命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将会被BLPOP    命令阻塞,直到等待超时,会有可弹出元素为止。

当给定多个key参数的时候,按参数key的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。

  1. DEl job command request#删除元素
  2. 0
  1. LPUSH command "update system"#添加元素
  2. 1
  3. LPUSH request "visit page"
  4. 1
  5. BLPOP job command request 0#弹出存在元素的第一个非空列表
  6. command#表名
  7. update system#第一个元素

如果所有给定的key都为空列表会不存在,那么BLPOP命令将阻塞连接,直到等待超时会其他客户端调用LPUSH或RPUSH命令为列表添加元素。

  1. redis> EXISTS job # 确保两个 key 都不存在
  2. (integer) 0
  3. redis> EXISTS command
  4. (integer) 0
  5. redis> BLPOP job command 300 # 因为key一开始不存在,所以操作会被阻塞,直到另一客户端对 job 或者 command 列表进行 PUSH 操作。
  6. 1) "job" # 这里被 push 的是 job
  7. 2) "do my home work" # 被弹出的值
  8. (26.26s) # 等待的秒数
  9. redis> BLPOP job command 5 # 等待超时的情况
  10. (nil)
  11. (5.66s) # 等待的秒数

相同的key可以被多个客户端阻塞。客户端被放进一个队列中,按照先进先出的方式,为key执行BLPOP命令。

一个被包裹在MULTI/EXEC块内的BLPOP命令,行为变现的和LPOP一样,对空列表返回nil,非空列表弹出对应元素。

  1. RPUSH job programming
  2. 1
  3. MULTI
  4. OK
  5. BLPOP job 10
  6. QUEUED
  7. EXEC#执行非空列表,立即返回
  8. job
  9. programming
  10. LLEN job
  11. 0
  12. MULTI
  13. OK
  14. BLPOP job 5
  15. QUEUED
  16. EXEC#执行空列表,返回nil
  17. (nil)

BRPOP

BRPOP key[key ...] timeout:BRPOP是列表的阻塞式弹出原语。他是RPOP命令的阻塞式。和BLPOP使用基本相同。

BRPOPLPUSH

BRPOPLPUSH source destination timeout:BRPOPLPUSH是RPOPLPUSH的阻塞版本,当给定列表source不为空 时,两者表现相同。当列表为空时,BRPOPLPUSH命令将阻塞连接,知道等待超时,会有其他客户端执行push操作。

返回值:在指定时间没有任何元素被弹出,则返回一个nil和等待时长。反之,返回一个两个元素列表,包含弹出元素的值和等待时长。

  1. BRPOPLPUSH msg reciver 10#空列表
  2. (nil)
  3. (10.33s)
  4. LPUSH msg "hello"
  5. 1
  6. BRPOPLPUSH msg reciver 10#非空 列表
  7. hello
  8. LLEN reciver
  9. 1

LINDEX

LINDEX key index:返回列表key中,下表为index的元素。

返回值:列表中下标为index的元素。如果index参数的值不在列表的区间范围内,返回nil。

  1. LPUSH mylist "World"
  2. 1
  3. LPUSH mylist "HELLO"
  4. 2
  5. LINDEX mylist 0
  6. HELLO
  7. LINDEX mylist -1
  8. World

LINSERT

LINSERT key BEFORE|AFTER pivot value:将值value插入到列表key当中,位于值pivot之前或之后。

当pivot不存在时,不执行任何操作。当key不存在时,不执行任何操作。

当key不是列表类型,返回一个错误。

返回值:执行成功,返回操作后的列表长度。如果找不到pivot,返回-1。key不存在,返回0。

  1. LINSERT mylist BEFORE "World" "Three"
  2. 3
  3. LRANGE mylist 0 -1
  4. HELLO
  5. Three
  6. World

LLEN

LLEN key:返回列表的长度,如果列表不存在返回0.如果key不是列表类型,返回一个错误。

返回值:列表长度。

  1. LLEN job
  2. 1
  3. LPUSH job "sda"
  4. 2
  5. LLEN job
  6. 2

LPOP

LPOP key:移除并返回列表key的头元素。

返回值:列表的头元素。当key不存在时,返回nil。

  1. LLEN course
  2. 0
  3. RPUSH course 01
  4. 1
  5. RPUSH course 02
  6. 2
  7. LPOP course
  8. 01
  9. LLEN course
  10. 1

LPUSH

LPUSH key value [value ...]:将一个或多个value插入到列表的表头。如果有多个value。那么value值按照从左到右的顺序依次插入。

如果key不存在,那么一个空列表会被创建并执行LPUSH操作。

返回值:执行后列表的长度。

  1. LPUSH languages python
  2. 1
  3. LPUSH languages python
  4. 2
  5. LRANGE languages 0 -1
  6. python
  7. python
  8. LPUSH languages a b c
  9. 5
  10. LRANGE languages 0 -1
  11. c
  12. b
  13. a
  14. python
  15. python

LPUSHX

LPUSHX key value:将值value插入到列表的表头,当且仅当key存在并且是一个列表。与LPUSH命令相反,当key不存在时,LPUSHX命令什么也不做。

返回值:LPUSHX命令执行后,表的长度。

  1. LLEN greet
  2. 0
  3. LPUSHX greet "hello"
  4. 0
  5. LPUSH greet "hello"
  6. 1
  7. LPUSHX greet "hello"
  8. 2
  9. LRANGE greet 0 -1
  10. hello
  11. hello

LRANGE

LRANGE key start stop:返回列表区间内元素,区间偏移量以start stop指定。start stop闭区间内的元素会返回,比如 0 10 返回11个元素。

  1. RPUSH language lisp
  2. 1
  3. RPUSH language java
  4. 2
  5. LRANGE language 0 0
  6. lisp
  7. LRANGE language 0 1
  8. lisp
  9. java

LREM

LREM key count value:根据参数count的值,移除列表中与参数value相等的元素。

count大于0,从表头移除。

count小于0,从表尾移除。

count等于0,移除所有与value相等的值。

返回值:被移除的元素的数量。

  1. LPUSH greet "morning"
  2. 1
  3. LPUSH greet "hello"
  4. 2
  5. LPUSH greet "morning"
  6. 3
  7. LPUSH greet "hello"
  8. 4
  9. LPUSH greet "morning"
  10. 5
  11. LRANGE greet 0 4
  12. morning
  13. hello
  14. morning
  15. hello
  16. morning
  17. LREM greet 2 morning
  18. 2
  19. LLEN morning
  20. 0
  21. LLEN greet
  22. 3
  23. LREM greet -1 morning
  24. 1
  25. LLEN greet
  26. 2
  27. LRANGE greet 0 -1
  28. hello
  29. hello

LSET

LSET key index value:将列表key下标index的元素值设为value。

返回值:操作成功返回ok,否则返回错误信息。

  1. EXISTS list
  2. 0
  3. LSET list 0 item
  4. ERR no such key
  5. LPUSH job "cook"
  6. 1
  7. LRANGE job 0 0
  8. cook
  9. LSET job 0 "play game"
  10. OK
  11. LRANGE job 0 -1
  12. play game

LTRIM

LTRIM key start stop:对一个列表进行修剪操作,让列表只保留指定区域内的元素,不在区域内的元素将被删除。

返回值:命令执行成功,返回ok。

  1. LPUSH alpha a b c d e f g
  2. 7
  3. LTRIM alpha 1 -1
  4. OK
  5. LRANGE alpha 0 -1
  6. f
  7. e
  8. d
  9. c
  10. b
  11. a
  12. LTRIM alpha 1 -1
  13. OK
  14. LRANGE alpha 0 -1
  15. e
  16. d
  17. c
  18. b
  19. a

RPOP

RPOP key:移除并返回列表的尾元素。

返回值:列表的尾元素。

  1. LRANGE alpha 0 -1
  2. e
  3. d
  4. c
  5. b
  6. a
  7. RPOP alpha
  8. a
  9. LRANGE alpha 0 -1
  10. e
  11. d
  12. c
  13. b

RPOPLPUSH

RPOPLPUSH source destination:在一个原子时间内执行:1)将列表source中的最后一个元素弹出,并返回给客户端。将source元素弹出的元素插入列表destination,作为destination列表的头元素。

返回值:被弹出的元素。

  1. LRANGE alpha 0 -1
  2. e
  3. d
  4. c
  5. b
  6. RPOPLPUSH alpha reciver
  7. b
  8. LRANGE alpha 0 -1
  9. e
  10. d
  11. c
  12. LRANGE reciver 0 -1
  13. b
  14. RPOPLPUSH alpha reciver
  15. c
  16. LRANGE alpha 0 -1
  17. e
  18. d
  19. LRANGE reciver 0 -1
  20. c
  21. b

RPUSH

RPUSH key value[value .. ]:将一个或多个值value插入到列表key的表尾。如果多个key,那么按照从左到右的顺序插入到列表。

返回值:执行操作后,表的长度。

  1. RPUSH language c
  2. 1
  3. LRANGE language 0 -1
  4. c
  5. RPUSH language a b c
  6. 4
  7. LRANGE language 0 -1
  8. c
  9. a
  10. b
  11. c

RPUSHX

RPUSHX key value:将值插入列表key的表尾,当且仅当key存在并且是一个列表。当key不存在时,不进行任何操作。

返回值:表的长度。

  1. LLEN greet
  2. 0
  3. RPUSHX greet "hello"
  4. 0
  5. RPUSH greet a
  6. 1
  7. RPUSHX greet "hello"
  8. 2
时间: 2024-11-07 18:55:48

Redis命令学习—List(列表)的相关文章

Redis 命令学习

每天不学习点新的东西,感觉就有点会被社会淘汰掉了.也许现在学习的知识会很快忘记,下次学习用到这个知识点的时候,再回来翻记录的笔记,我想这样会比从头再学,效率会高点吧. 闲话不多聊,回归正题.今天学习redis的命令,争取把常用的redis命令都敲一遍. redis命令就是在redi服务上执行的.要想启动redis服务.我是在windows本机上安装的redis.先切换到redis目录 然后启动redis服务. 启动redis redis-cli Redis 键(key) set key conm

Redis命令学习-Set(集合)

1. SADD SADD key member[member ...]:将一个或者多个member计入集合key中去,已经存在集合中的member将会被忽略.计入key不存在,则会创建一个包含member元素的集合.当key不是集合时,返回一个错误. ?返回值:被添加到集合中的元素的个数. 127.0.0.1:6379> SADD bbs "csdn.com" (integer) 1 127.0.0.1:6379> SADD bbs "redis.com"

Redis命令学习—Hash(哈希表)操作

HDEL HDEL key field [field...]:删除Hash key中的一个或多个域, 不存在的域会被忽略. 返回值:被成功删除的key的数量. # 测试数据 redis> HGETALL abbr 1) "a" 2) "apple" 3) "b" 4) "banana" 5) "c" 6) "cat" 7) "d" 8) "dog&qu

Redis命令学习-string类型操作

APPEND key value 如果key已经存在,并且为字符串,那么这个命令会把value追加到原来值的末尾.如果key不存在,首先创建一个空字符串,再执行追加操作. 返回值:返回APPEND后字符串的长度. EXISTS mykey 0 APPEND mykey "Hello" 5 APPEND mykey " world" 11 GET mykey Hello world SETBIT SETBIT key offset value 对key所存储的字符串值

Redis命令学习-SortedSet(有序集合)

?ZADD ZADD key score member[score member ... ]:将一个或多个member元素及其score值加入到有序集key中.如果member已经是有序集合中的值,则更新score.score是整数值,双精度值.如果key不存在,则创建一个有序集合,并加入.如果key不是一个有序集合,则返回一个错误. 返回值:成功添加的数量,不包含已经存在和更新的成员. 127.0.0.1:6379> ZADD page_rank 10 google.com (integer)

Redis命令学习-?Transaction(事务)

?DISCARD ?DISCARD :取消事务,放弃运行事务块内的全部代码.假设在使用WATCH命令监视某个key.则取消监视,等同于UNWATCH. ?返回值:总是返回ok.    ? ? 127.0.0.1:6379> MULTI OK 127.0.0.1:6379> PING QUEUED 127.0.0.1:6379> SET greeting "hello" QUEUED 127.0.0.1:6379> DISCARD OK 127.0.0.1:637

redis演练(2) 最全redis命令列表

官方The full list of commands 官方在线交互学习工具 Redis命令参考简体中文版 Redis-cli命令最新总结 Redis 命令参考(官方中文翻译) Redis命令简明示例 下面列表是本人通过程序搜集的help命令整理的聚合列表,希望为redis填把火. COMMAND summary since group DECR key  Decrement the integer value of a  key by one  1.0.0  string DECRBY key

Redis学习之列表类型详解

本文和大家分享的主要是redis的列表类型相关内容,一起来看看吧,希望对大家学习redis有所帮助. 列表类型,可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段 列表类型内部是使用双向链表实现的,所以向列表两端添加元素的时间复杂度是 o(1),获取越接近两端的元素速度就越快 链表的代价是通过索引访问元素比较慢 向列表两端添加元素 向列表左边添加元素,返回增加后列表的长度 LPUSH key value1 value2 127.0.0.1:6379> LPUS

Redis 学习之路 (010) - redis命令手册

Redis 键(key) 命令 命令 描述 Redis DEL 命令 该命令用于在 key 存在是删除 key. Redis Dump 命令 序列化给定 key ,并返回被序列化的值. Redis EXISTS 命令 检查给定 key 是否存在. Redis Expire 命令 seconds 为给定 key 设置过期时间. Redis Expireat 命令 EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间. 不同在于 EXPIREAT 命令接受的时间参数是 UN