码迷,mamicode.com
首页 > 其他好文 > 详细

Redis命令学习—List(列表)

时间:2015-06-14 15:09:44      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

本文参考: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


Redis命令学习—List(列表)

标签:

原文地址:http://blog.csdn.net/mergades/article/details/46491303

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!