• Redis 的数据类型


    LPUSH:向列表左端添加元素

      语法:LPUSH key value value...

        LPUSH testList1 a b c

        LPUSH testList1 c d e

        LRANGE testList1 0 -1

    127.0.0.1:6379> LPUSH testList1 a b c
    (integer) 3
    
    127.0.0.1:6379> LPUSH testList1 c d e
    (integer) 6
    
    127.0.0.1:6379> LRANGE testList1 0 -1
    1) "e"
    2) "d"
    3) "c"
    4) "c"
    5) "b"
    6) "a"

    RPUSH:向列表右端添加元素

      语法:RPUSH key value ...

        RPUSH testList1 test1 test2 test3

        RPUSH testList1 test3 test4

        LRANGE testList1 0 -1

    127.0.0.1:6379> RPUSH testList1 test1 test2 test3
    (integer) 9
    
    127.0.0.1:6379> RPUSH testList1 test3 test4
    (integer) 11
    
    127.0.0.1:6379> LRANGE testList1 0 -1
     1) "e"
     2) "d"
     3) "c"
     4) "c"
     5) "b"
     6) "a"
     7) "test1"
     8) "test2"
     9) "test3"
    10) "test3"
    11) "test4"

      #如果列表不存在,则新建一个列表再插入,如果所选 key 不是列表类型,则会报错#

    LPUSHX:向列表头部添加元素,只有 key 存在才可以添加

      语法:LPUSHX key value

        LPUSHX testList2 a

        LPUSH testList2 a

        LPUSHX testList2 b

        LRANGE testList2 0 -1

    127.0.0.1:6379> LPUSHX testList2 a
    (integer) 0
    
    127.0.0.1:6379> LPUSH testList2 a
    (integer) 1
    
    127.0.0.1:6379> LPUSHX testList2 b
    (integer) 2
    
    127.0.0.1:6379> LRANGE testList2 0 -1
    1) "b"
    2) "a"

    RPUSHX:向列表尾部添加元素,只有 key 存在在来添加

      语法:RPUSHX key value

        # RPUSHX 和 LPUSHX 原理相同,这里就不举例说明了#

    LPOP:将列表头部的元素弹出

    RPOP:弹出列表尾部的元素

      语法:LPOP key

           RPOP key

        LPOP testList1

        RPOP testList1

    127.0.0.1:6379> LPOP testList1
    "e"
    
    127.0.0.1:6379> RPOP testList1
    "test4"

    LLEN:得到列表的长度

      语法:LLEN key

        LLEN testList2

        LLEN testList1

    127.0.0.1:6379> LLEN testList2
    (integer) 2
    
    127.0.0.1:6379> LLEN testList1
    (integer) 9

    LRANGE:获取列表片段

      语法:LRANGE key start stop

        LRANGE testList1 0 -1   # 0 开始,-1 结束#

        LRANGE testList1 3 5

        LRANGE testList1 99 6  #如果 start 下标比列表的最大下标 end 大,返回的空列表#

        LRANGE testList1 3 99  #如果 stop 比列表长度大,返回到列表的末尾#

        LRANGE testList1 6 6  #这里 start 和 stop 相同表示取 key 下标为 6 这一个 key 的值#

    127.0.0.1:6379> LRANGE testList1 0 -1
    1) "d"
    2) "c"
    3) "c"
    4) "b"
    5) "a"
    6) "test1"
    7) "test2"
    8) "test3"
    9) "test3"
    
    127.0.0.1:6379> LRANGE testList1 3 5
    1) "b"
    2) "a"
    3) "test1"
    
    127.0.0.1:6379> LRANGE testList1 99 6
    (empty list or set)
    
    127.0.0.1:6379> LRANGE testList1 3 99
    1) "b"
    2) "a"
    3) "test1"
    4) "test2"
    5) "test3"
    6) "test3"
    
    127.0.0.1:6379> LRANGE testList1 6 6
    1) "test2"

    LREM:删除列表中指定的值

      语法:LREM key count value

        count > 0: 从列表的头开始,向尾部搜索,移除与 value 相等的元素,移除 count 个

        count <= 0: 从列表尾部向头搜索,移除与 value 相等的元素,移除 count 个

        count = 0, 移除列表中所有与 count 相等的值

        LPUSH testList2 m a r i o

        LREM testList2 2 b

        LREM testList2 -2 a

        LREM testList2 0 i

        LRANGE testList2 0 -1

    127.0.0.1:6379> LPUSH testList2 m a r i o
    (integer) 7
    
    127.0.0.1:6379> LREM testList2 2 b
    (integer) 1
    
    127.0.0.1:6379> LRANGE testList2 0 -1
    1) "o"
    2) "i"
    3) "r"
    4) "a"
    5) "m"
    6) "a"
    
    127.0.0.1:6379> LREM testList2 -2 a
    (integer) 2
    
    127.0.0.1:6379> LREM testList2 0 i
    (integer) 1
    
    127.0.0.1:6379> LRANGE testList2 0 -1
    1) "o"
    2) "r"
    3) "m"

    LINDEX:获得指定索引元素的值

      语法:LINDEX key index

        LINDEX testList1 3

        LINDEX testList1 -3

        LINDEX testList2 3   #超出范围会返回 nil #

    127.0.0.1:6379> LINDEX testList2 3
    (nil)
    
    127.0.0.1:6379> LINDEX testList1 3
    "b"
    
    127.0.0.1:6379> LINDEX testList1 -3
    "test2"

    LSET:设置指定索引元素的值

      语法:LSET key index value

        LSET testList2 0 tom

        LRANGE testList2 0 -1

        LSET testList2 10 tom  #超出范围会报错#

        LSET testList22 0 tom  # key 不存在会报错#

    127.0.0.1:6379> LSET testList2 0 tom
    OK
    
    127.0.0.1:6379> LRANGE testList2 0 -1
    1) "tom"
    2) "r"
    3) "m"
    
    127.0.0.1:6379> LSET testList2 10 tom
    (error) ERR index out of range
    
    127.0.0.1:6379> LSET testList22 0 tom
    (error) ERR no such key

    LTRIM:只保留列表的片段

      语法:LTRIM key start stop

        LPUSH testList3 tom jerry mario jack lucy

        LTRIM testList3 0 1

        LRANGE testList3 0 -1

        LPUSH testList4 tom jerry mario jack lucy chris david

        LTRIM testList4 1 -1

        LRANGE testList4 0 -1

        LTRIM testList4 1 1000

        LTRIM testList4 1000 2000   #列表被清空#

        LTRIM testList4 3000 2000   #起始点比结束点大,同样列表被清空#

    127.0.0.1:6379> LPUSH testList3 tom jerry mario jack lucy
    (integer) 5
    
    127.0.0.1:6379> LTRIM testList3 0 1
    OK
    
    127.0.0.1:6379> LRANGE testList3 0 -1
    1) "lucy"
    2) "jack"
    
    127.0.0.1:6379> LPUSH testList4 tom jerry mario jack lucy chris david
    
    (integer) 7
    127.0.0.1:6379> LTRIM testList4 1 -1
    OK
    
    127.0.0.1:6379> LRANGE testList4 0 -1
    1) "chris"
    2) "lucy"
    3) "jack"
    4) "mario"
    5) "jerry"
    6) "tom"
    
    127.0.0.1:6379> LTRIM testList4 1 1000
    OK
    
    127.0.0.1:6379> LRANGE testList4 0 -1
    1) "lucy"
    2) "jack"
    3) "mario"
    4) "jerry"
    5) "tom"
    
    127.0.0.1:6379> LTRIM testList4 1000 2000
    OK
    
    127.0.0.1:6379> LRANGE testList4 0 -1
    (empty list or set)

    LINSERT:向列表插入元素

      语法:LINSERT key BEFORE|AFTER pivot value

        LPUSH testList5 tom jerry mario jack lucy chris david

        LINSERT testList5 BEFORE 'jerry' 'anni'

        LRANGE testList5 0 -1

        LINSERT testList5 BEFORE tim nick

        LINSERT testList5 AFTER tom time

        LINSERT testList6 AFTER tom tim

    127.0.0.1:6379> LPUSH testList5 tom jerry mario jack lucy chris david
    (integer) 7
    
    127.0.0.1:6379> LINSERT testList5 BEFORE 'jerry' 'anni'
    (integer) 8
    
    127.0.0.1:6379> LRANGE testList5 0 -1
    1) "david"
    2) "chris"
    3) "lucy"
    4) "jack"
    5) "mario"
    6) "anni"
    7) "jerry"
    8) "tom"
    
    127.0.0.1:6379> LINSERT testList5 BEFORE tim nick
    (integer) -1
    
    127.0.0.1:6379> LINSERT testList5 AFTER tom tim
    (integer) 9
    
    127.0.0.1:6379> LRANGE testList5 0 -1
    1) "david"
    2) "chris"
    3) "lucy"
    4) "jack"
    5) "mario"
    6) "anni"
    7) "jerry"
    8) "tom"
    9) "tim"
    
    127.0.0.1:6379> LRANGE testList6 0 -1
    (empty list or set)
    
    127.0.0.1:6379> LINSERT testList6 AFTER tom tim
    (integer) 0

    RPOPLPUSH:将元素从一个列表转到另一个列表

      语法:RPOPLPUSH source destination

        LPUSH testList6 red green blue

        RPOPLPUSH testList6 testList5

        RPOPLPUSH testList5 testList5  #列表名相同的时候,可以做到从列表的左边取值插入到右边的效果#

        LRANGE testList5 0 -1

    127.0.0.1:6379> LPUSH testList6 red green blue
    (integer) 3
    
    127.0.0.1:6379> RPOPLPUSH testList6 testList5
    "red"
    
    127.0.0.1:6379> LRANGE testList5 0 -1
     1) "red"
     2) "david"
     3) "chris"
     4) "lucy"
     5) "jack"
     6) "mario"
     7) "anni"
     8) "jerry"
     9) "tom"
    10) "tim"
    
    127.0.0.1:6379> LRANGE testList6 0 -1
    1) "blue"
    2) "green"
    
    127.0.0.1:6379> RPOPLPUSH testList5 testList5
    "tim"
    
    127.0.0.1:6379> RPOPLPUSH testList5 testList5
    "tom"
    
    127.0.0.1:6379> RPOPLPUSH testList5 testList5
    "jerry"
    
    127.0.0.1:6379> LRANGE testList5 0 -1
     1) "jerry"
     2) "tom"
     3) "tim"
     4) "red"
     5) "david"
     6) "chris"
     7) "lucy"
     8) "jack"
     9) "mario"
    10) "anni"

    BLPOP:BLPOP 是LPOP的阻塞版本

      语法:BLPOP key [key...] timeout

        BLPOP testList10 testList5 testList6 0无限延长

        BLPOP testList 0

        #这里用 BLPOP 作用一个不存在的列表时,客户端会一直等待,没有返回值# 

    127.0.0.1:6379> BLPOP testList10 testList5 testList6 0
    1) "testList5"
    2) "jerry"
    
    127.0.0.1:6379> BLPOP testList 0
    _

        LPUSH testList tom  #这个时候我们在开启一个 6380 端口的客户端,给 testList 赋个值#

    127.0.0.1:6380> LPUSH testList tom
    (integer) 1

        #这个时候原客户端会立刻做出回应#

    127.0.0.1:6379> BLPOP testList 0
    1) "tom"
    (162.99s)
  • 相关阅读:
    bzoj 3091 城市旅行(LCT+数学分析)
    bzoj 2843 极地旅行社(LCT)
    Tsinsen A1303. tree(伍一鸣) (LCT+处理标记)
    bzoj 2002 [Hnoi2010]Bounce 弹飞绵羊(LCT)
    bzoj 2049 [Sdoi2008]Cave 洞穴勘测(LCT)
    vijos P1213 80人环游世界(有源汇的上下界费用流)
    bzoj 3698 XWW的难题(有源汇的上下界最大流)
    bzoj 2502 清理雪道(有源汇的上下界最小流)
    sgu 176 Flow construction(有源汇的上下界最小流)
    详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别
  • 原文地址:https://www.cnblogs.com/shuo-128/p/7082200.html
Copyright © 2020-2023  润新知