暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

别找了,你要的Redis命令都在这了

528

KEY操作

1. KEYS
格式:KEYS pattern
说明:查找所有符合给定模式pattern的key。
通常有3个通配符 *, ? ,[]
*:匹配任意多个字符
?:匹配单个字符
[]:匹配括号内的某1个字符
\:转义字符
示例:
    127.0.0.1:6379> keys *         #匹配数据库中所有key。
    127.0.0.1:6379> keys h?llo     #可以匹配hello、hallo、hbllo等。
    127.0.0.1:6379> keys h*llo     #可以匹配hllo、hello、heello等。
    127.0.0.1:6379> keys h[a,e]llo #只能匹配hallo和hello

    注意:KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,建议用scan命令,以渐进的方式分多次遍历数据库。

    2. DEL

    格式:DEL key [key ...]

    说明:删除给定的一个或多个 key 。不存在的 key 会被忽略。

    示例:

      #删除单个key
      127.0.0.1:6379del test1
      (integer) 1
      #删除多个key
      127.0.0.1:6379del test2 test3
      (integer) 2

      3. TYPE

      格式:type key

      说明:返回给定keyvalue类型

      示例:

        127.0.0.1:6379> type name
        string

        4. EXISTS

        格式:EXISTS key [key ...]

        说明:检查给定 key 是否存在。若 key 存在,返回 1 ,否则返回 0 

        示例:

          127.0.0.1:6379> EXISTS name
          (integer) 1

          5. RANDOMKEY

          格式:RANDOMKEY

          说明:从当前数据库中随机返回一个key,当数据库为空时,返回 nil 

          示例:

            127.0.0.1:6379> RANDOMKEY
            "hello"

            6. EXPIRE

            格式:expire key seconds

            说明:用于设置 key 的过期时间。key 过期后将不再可用。

            示例:

              127.0.0.1:6379> expire mylist 60
              (integer) 1

              7. TTL

              格式:ttl key

              说明:以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)

               key 不存在时,返回 -2 

               key 存在但没有设置剩余生存时间时,返回 -1 

              否则,以秒为单位,返回 key 的剩余生存时间。

              示例:

                127.0.0.1:6379> ttl name
                (integer) 6

                8. PERSIST

                格式:PERSIST key

                说明:移除给定 key 的生存时间,将这个 key 从带生存时间的key 转换成持

                久化的key(一个不带生存时间、永不过期的 key )

                示例:

                  127.0.0.1:6379> PERSIST name
                  (integer) 1

                  9. PEXPIREAT

                  格式:PEXPIREAT key milliseconds-timestamp

                  说明:这个命令和 EXPIREAT 命令类似,但它以毫秒为单位设置 key 的过期 unix 时间戳。

                  示例:

                    127.0.0.1:6379> PEXPIREAT name 100000
                    (integer) 1

                    10. PTTL

                    格式:pttl key

                    说明:命令类似于 TTL 命令,但它以毫秒为单位返回 key 的剩余生存时间。

                    示例:

                      127.0.0.1:6379> pttl name
                      (integer) 94370

                      11. MOVE

                      格式:move key db

                      说明:将当前数据库的 key 移动到给定的数据库 db 当中。如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者key 不存在于当前数据库,那么 MOVE 不会生效。

                      示例:

                        127.0.0.1:6379> move name 1
                        (integer) 1

                        12. RENAME

                        格式:rename key newkey

                        说明:将 key 改名为 newkey 。当 key  newkey 相同,或者 key 不存在时,返回一个错误。当 newkey 已经存在时, RENAME 命令将覆盖旧值

                        示例:

                          127.0.0.1:6379> rename name name1
                          OK

                          13. RENAMENX

                          格式:renamenx key newkey

                          说明:当且仅当 newkey 不存在时,将 key 改名为 newkey 。 key 不存在时,返回一个错误。

                          示例:

                            127.0.0.1:6379> renamenx name1 name2
                            (integer) 1
                            127.0.0.1:6379> renamenx name1 name2
                            (error) ERR no such key

                            14. DUMP

                            格式:dump key

                            说明:序列化给定 key ,并返回被序列化的值,使用 RESTORE 命令可以将这个值反序列化为Redis 键。

                            示例:

                              127.0.0.1:6379> dump name
                              "\x00\x02wb\b\x00>P=\xb2\x87\xbcG\xc5"

                              15. RESTORE

                              格式:restore key ttl serialized-value [REPLACE]

                              说明:反序列化给定的序列化值,并将它和给定的 key 关联。参数 ttl 以毫秒为单位为 key 设置生存时间;如果 ttl  0 ,那么不设置生存时间。

                              示例:

                                127.0.0.1:6379> set name 'redis'
                                OK
                                127.0.0.1:6379> dump name
                                "\x00\x05redis\b\x00|}ENK67\x19"
                                127.0.0.1:6379> restore name-new 0 "\x00\x05redis\b\x00|}ENK67\x19"
                                OK
                                127.0.0.1:6379> get name-new
                                "redis"

                                16. MIGRATE

                                格式:migrate host port key| destination-db timeout [COPY] [REPLACE] [KEYS key]

                                说明:将 key 原子性地从当前实例传送到目标实例的指定数据库上,一旦传送成功, key 

                                证会出现在目标实例上,而当前实例上的 key 会根据参数选择是否删除元端的key

                                host:目标redisIP

                                port:目标redis 的端口

                                destination-db:目标redis的数据库索引,例如要迁移到0好数据库,就写0.

                                timeout:迁移的超时时间。

                                [COPY]:迁移后不删除源键。

                                [REPLACE]:如果目标端存在该键时会进行数据覆盖。

                                [KEYS key]:迁移多个键,比如:”keys key1 key2 key3”

                                示例:

                                  #开始迁移
                                  127.0.0.1:6379> migrate 127.0.0.1 6380 name 0 10
                                  OK
                                  127.0.0.1:6379> get name  #源端已经没有了
                                  (nil)
                                  #目标库进行查询
                                  127.0.0.1:6380> get name
                                  "redis"
                                  #在源端再次迁移时,此时源端已经没有了
                                  127.0.0.1:6379> migrate 127.0.0.1 6380 name 0 10
                                  NOKEY
                                  #在源端重新加上name键,再次迁移,这时源端和目标端都存在name键
                                  127.0.0.1:6379> migrate 127.0.0.1 6380 name 0 10
                                  (error) ERR Target instance replied with error: BUSYKEY Target key name already exists.
                                  #在源端和目标端都存在同一键时,使用REPLACE参数
                                  127.0.0.1:6379> migrate 127.0.0.1 6380 name 0 10 replace
                                  OK

                                  17. SCAN

                                  格式:scan cursor [MATCH pattern] [COUNT count]

                                  说明:scan的出现是为了解决keys命令存在的性能问题,scan采用渐进式遍历的方式解决keys可能带来的阻塞问题,如果想遍历数据库中所有的键,一般需要多次scanRedis同样提供了面向哈希类型、集合类型、有序集合的遍历命令,分别为hscansscanzscan

                                  cursor:游标,第一次遍历从0开始,每次scan都返回当前游标值,当返回0时代表遍历结束。

                                  MATCH pattern:匹配模式

                                  COUNT count:表明每次要遍历的键的个数。

                                  示例:

                                    127.0.0.1:6380> scan 0
                                    1) "6"
                                    2)  1) "c"
                                        2) "j"
                                        3) "s"
                                        4) "f"
                                        5) "k"
                                        6) "w"
                                        7) "v"
                                        8) "q"
                                        9) "b"
                                    10) "i"

                                    String(字符串)

                                    1. SET/SETNX/SETEX/PSETEX/MSET/MSETNX

                                    格式:

                                    set key value/ setnx key value/ setex key seconds value/ psetex key milliseconds value/mset key value [key value ...]/ msetnx key value [key value ...]

                                    这几个命令时设置key对应的值为string类型的value。其中区别如下:

                                    setnx:如果给定的key已经存在,则不做任何修改。

                                    setex:会将 key 的生存时间设为 seconds (以秒为单位)。如果 key 已经存在, setex命令将覆写旧值。

                                    psetex:会以毫秒为单位设置 key 的生存时间。

                                    mset:同时设置一个或多个 key-value 对。如果某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值

                                    msetnx:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。即使只有一个给定 key 已存在, MSETNX 也会拒绝执行所有给定 key 的设置操作。

                                    示例:

                                      127.0.0.1:6379> set name 'redis'
                                      OK
                                      127.0.0.1:6379> setnx name 'redis'
                                      (integer) 0
                                      127.0.0.1:6379> setex name1 10 'redis'
                                      OK
                                      127.0.0.1:6379> psetex name2 1000 'redis'
                                      OK
                                      127.0.0.1:6379> mset name1 'redis' name2 'mysql' name3 'mongoDB'
                                      OK
                                      127.0.0.1:6379> msetnx name1 'redis' name4 'mysql' name5 'mongoDB'  #失败,因为name1已经存在
                                      (integer) 0

                                      2. GET/MGET/ GETRANGE/GETSET

                                      格式:

                                      get key/ mget key [key ...]/ getrange key start end/ getset key value

                                      说明:这几个命令主要是获取某些key的值,区别如下:

                                      get :返回key的字符串值,如key不存在则返回nil

                                      mget:返回所有给定 key 的值,如果某个key不存在则返回nil

                                      getrange:返回 key 中字符串值的子字符串,字符串的截取范围由 start  end 两个偏移量决定(包括 start  end 在内)。负数偏移量表示从字符串最后开始计数,-1 表示最后一个字符,-2 表示倒数第二个,以此类推。

                                      getset:将给定 key 的值设为 value ,并返回 key 的旧值(old value)

                                      示例:

                                        127.0.0.1:6379> get name1
                                        "redis"
                                        127.0.0.1:6379> mget name1 name2 name10
                                        1) "redis"
                                        2) "mysql"
                                        3) (nil)
                                        127.0.0.1:6379> getrange name1 2 3
                                        "di"
                                        127.0.0.1:6379> getset name1 REDIS
                                        "redis"

                                        3. SETRANGE

                                        格式:setrange key offset value

                                        说明:用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始,不存在的 key 当作空白字符串处理。

                                        示例:

                                          127.0.0.1:6379> set greeting 'hello world'
                                          OK
                                          127.0.0.1:6379> setrange greeting 6 'redis'
                                          (integer) 11
                                          127.0.0.1:6379> get greeting
                                          "hello redis"

                                          4. STRLEN

                                          格式:strlen key

                                          说明:返回 key 所储存的字符串值的长度。

                                          示例:

                                            127.0.0.1:6379> strlen name1
                                            (integer) 5

                                            5. APPEND

                                            格式:append key value

                                            说明:如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key 

                                            value 一样。

                                            示例:

                                              127.0.0.1:6379> append name1 "   MySQL"
                                              (integer) 13
                                              127.0.0.1:6379> get name1
                                              "REDIS MySQL"

                                              6. INCR/ INCRBY

                                              格式:incr key/ incrby key increment

                                              说明:将 key 中储存的数字值加法运算。其中incr做加一运算,incrby命令会将valueincrement。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRINCRBY操作。

                                              示例:

                                                127.0.0.1:6379> incr no #数据库中不存在no,会先把它初始化为0,然后加1
                                                (integer) 1
                                                127.0.0.1:6379> incrby no 10 #no初始值是1,加10后是11。
                                                (integer) 11

                                                7. DECR/ DECRBY

                                                格式:decr key/ decrby key decrement

                                                说明:将 key 中储存的数字值做减法运算。其中decr做减一运算,decrby命令会将value减去decrement

                                                如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。

                                                示例:

                                                  127.0.0.1:6379> decr no
                                                  (integer) 10
                                                  127.0.0.1:6379> decrby no 11
                                                  (integer) -1

                                                  Hash(哈希表)

                                                  1. HSET/HSETNX/HMSET

                                                  格式:

                                                  hset key field value/ hsetnx key field value/ hmset key field value [field value ...]

                                                  说明:这三个命令主要的作用是将哈希表 key 中的域 field 的值设为 value 。区别如下:

                                                  hset:如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。如果域 field 已经存在于哈希表中,旧值将被覆盖。

                                                  hsetnx:若域 field 已经存在,该操作无效。

                                                  Hmset:同时将多个 field-value (-)对设置到哈希表 key 中,此命令会覆盖哈希表中已存在的域。

                                                  示例:

                                                    127.0.0.1:6379> hset NoSQL name1 Redis
                                                    (integer) 1
                                                    127.0.0.1:6379> hsetnx NoSQL name1 Redis #因为已经存在name1了,插入无效
                                                    (integer) 0
                                                    127.0.0.1:6379> hsetnx NoSQL name2 mongoDB #插入name2成功。
                                                    (integer) 1
                                                    127.0.0.1:6379> hmset NoSQL name1 ReDis name2 MongoDB name3 Hbase
                                                    OK

                                                    2. HGET/HMGET/HGETALL

                                                    格式:

                                                    hget key field/ hmget key field [field ...]/ hgetall key

                                                    说明:这几个命令主要用来返回哈希表 key中给定域 field 的值。区别如下:

                                                    hget:返回哈希表中指定域field的值。

                                                    hmget:返回哈希表 key 中,一个或多个给定域的值。如果给定的域不存在于哈希表,那么返回一个 nil 值。

                                                    hgetall:返回哈希表 key 中,所有的域和值。

                                                    示例:

                                                      127.0.0.1:6379> hget NoSQL name1
                                                      "ReDis"
                                                      127.0.0.1:6379> hmget NoSQL name1 name2
                                                      1) "ReDis"
                                                      2) "MongoDB"
                                                      127.0.0.1:6379> hgetall NoSQL
                                                      1) "name1"
                                                      2) "ReDis"
                                                      3) "name2"
                                                      4) "MongoDB"
                                                      5) "name3"
                                                      6) "Hbase"

                                                      3. HDEL

                                                      格式:hdel key field [field ...]

                                                      说明:删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。

                                                      示例:

                                                        127.0.0.1:6379> hdel NoSQL name1 name2
                                                        (integer) 2
                                                        127.0.0.1:6379> hgetall NoSQL
                                                        1) "name3"
                                                        2) "Hbase"

                                                        4. HLEN

                                                        格式:hlen key

                                                        说明:返回哈希表 key 中域的数量。

                                                        示例:

                                                          127.0.0.1:6379> hlen NoSQL
                                                          (integer) 1

                                                          5. HEXISTS

                                                          格式:hexists key field

                                                          说明:查看哈希表 key 中,给定域 field 是否存在。如果哈希表含有给定域,返回 1 。如果哈希表不含有给定域,或 key 不存在,返回 0 

                                                          示例:

                                                            127.0.0.1:6379> hexists NoSQL name3
                                                            (integer) 1

                                                            6. HINCRBY/ HINCRBYFLOAT

                                                            格式:

                                                            hincrby key field increment/ hincrbyfloat key field increment

                                                            说明:为哈希表 key 中的域 field 的值加上增量 increment 。增量也可以为负数,相当于对给定域进行减法操作。如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY或者HINCRBYFLOAT命令。如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 

                                                            HINCRBYFLOAT命令中的increment是浮点数。

                                                            示例:

                                                              127.0.0.1:6379> hincrby score jack 70
                                                              (integer) 70
                                                              127.0.0.1:6379> hincrbyfloat score jack 10.5
                                                              "80.5"

                                                              7. HKEYS

                                                              格式:hkeys key

                                                              说明:返回哈希表 key 中的所有域。

                                                              示例:

                                                                127.0.0.1:6379> hkeys NoSQL
                                                                1) "name3"
                                                                2) "name1"
                                                                3) "name2"

                                                                8. HVALS

                                                                格式:hvals key

                                                                说明:返回哈希表 key 中所有域的值。

                                                                示例:

                                                                  127.0.0.1:6379> hvals NoSQL
                                                                  1) "Hbase"
                                                                  2) "Redis"
                                                                  3) "MongoDB"

                                                                  HList(列表)

                                                                  1. LPUSH/ LPUSHX/ RPUSH/ RPUSHX

                                                                  格式:

                                                                  lpush key value [value ...]/ lpushx key value/ rpush key value [value ...]/ rpushx key value

                                                                  说明:将值 value 插入到列表 key 的表头(最左侧),区别如下:

                                                                  LPUSH:将一个或多个值 value 插入到列表 key 的表头,如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。

                                                                  LPUSHX:将值 value 插入到列表 key 的表头,当 key 不存在时,LPUSHX 命令什么也不做。

                                                                  RPUSH:将一个或多个值 value 插入到列表 key 的表尾(最右侧),如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。

                                                                  RPUSHX: 将值 value 插入到列表 key 的表尾,当 key 不存在时,RPUSHX 命令什么也不做。

                                                                  示例:

                                                                    127.0.0.1:6379> lpush NoSQL Redis mongoDB Hbase
                                                                    (integer) 3
                                                                    127.0.0.1:6379> rpush NoSQL Redis mongoDB Hbase
                                                                    (integer) 6
                                                                    127.0.0.1:6379> lpushx NoSQL1 redis  #key不存在
                                                                    (integer) 0
                                                                    127.0.0.1:6379> rpushx NoSQL1 redis  #key不存在
                                                                    (integer) 0
                                                                    127.0.0.1:6379> rpushx NoSQL MemcacheDB
                                                                    (integer) 7
                                                                    127.0.0.1:6379> lpushx NoSQL Riak
                                                                    (integer) 8

                                                                    2. LPOP/RPOP/BLPOP/BRPOP

                                                                    格式: 

                                                                    lpop key/rpop key/ blpop key [key ...] timeout/ brpop key [key ...] timeout

                                                                    说明:这几个命令主要是移除列表中的某个元素,区别如下:

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

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

                                                                    BLPOP: 它是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止。当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。

                                                                    BRPOP:它是 RPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被BRPOP 命令阻塞,直到等待超时或发现可弹出元素为止。当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的尾部元素。

                                                                    示例:

                                                                      127.0.0.1:6379> lpop NoSQL
                                                                      "Riak"
                                                                      127.0.0.1:6379> rpop NoSQL
                                                                      "MemcacheDB"
                                                                      127.0.0.1:6379> blpop NoSQL 5
                                                                      1) "NoSQL"
                                                                      2) "Hbase"
                                                                      127.0.0.1:6379> 
                                                                      127.0.0.1:6379> brpop NoSQL 5
                                                                      1) "NoSQL"
                                                                      2) "Hbase"
                                                                      127.0.0.1:6379> brpop NoSQL_1 5
                                                                      (nil)
                                                                      (5.00s)

                                                                      3. LLEN

                                                                      格式:llen key

                                                                      说明:返回列表 key 的长度。

                                                                      示例:

                                                                        127.0.0.1:6379> llen NoSQL
                                                                        (integer) 4

                                                                        4. LRANGE

                                                                        格式:lrange key start stop

                                                                        说明:返回列表 key 中指定区间内的元素,区间以偏移量 start  stop 指定。下标(index)参数 start  stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

                                                                        示例:

                                                                          127.0.0.1:6379> lrange NoSQL 0 -1
                                                                          1) "mongoDB"
                                                                          2) "Redis"
                                                                          3) "Redis"
                                                                          4) "mongoDB"
                                                                          127.0.0.1:6379> lrange NoSQL -2 -1
                                                                          1) "Redis"
                                                                          2) "mongoDB"

                                                                          5. LREM

                                                                          格式:lrem key count value

                                                                          说明:根据count 值,移除列表中与参数 value 相等的元素。count 值可以是以下几种:

                                                                          count > 0 : 从表头开始搜索,移除与 value 相等的元素,数量为 count 

                                                                          count < 0 : 从表尾开始搜索,移除与 value 相等的元素,数量为 count 的绝对值。

                                                                          count = 0 : 移除表中所有与 value 相等的值。

                                                                          示例:

                                                                            127.0.0.1:6379> lrem NoSQL 1 Redis
                                                                            (integer) 1

                                                                            6. LSET

                                                                            格式:lset key index value

                                                                            说明:将列表 key 下标为 index 的元素的值设置为 value 

                                                                            示例:

                                                                              127.0.0.1:6379> lset NoSQL 0 Hbase
                                                                              OK
                                                                              127.0.0.1:6379> lrange NoSQL 0 -1
                                                                              1) "Hbase"
                                                                              2) "Redis"
                                                                              3) "mongoDB"

                                                                              7. LTRIM

                                                                              格式:ltrim key start stop

                                                                              说明:对一个列表进行修剪(trim),让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

                                                                              示例:

                                                                                127.0.0.1:6379> ltrim NoSQL 0 1
                                                                                OK
                                                                                127.0.0.1:6379> lrange NoSQL 0 -1
                                                                                1) "Hbase"
                                                                                2) "Redis"

                                                                                8. LINDEX

                                                                                格式:lindex key index

                                                                                说明:返回列表 key 中,下标为 index 的元素。

                                                                                示例:

                                                                                  127.0.0.1:6379> lrange NoSQL 0 -1
                                                                                  1) "MongoDB"
                                                                                  2) "Hbase"
                                                                                  3) "Redis"
                                                                                  127.0.0.1:6379> lindex NoSQL 0
                                                                                  "MongoDB"
                                                                                  127.0.0.1:6379> lindex NoSQL -1
                                                                                  "Redis"

                                                                                  9. LINSERT

                                                                                  格式:

                                                                                  linsert key BEFORE|AFTER pivot value

                                                                                  说明:将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。当 pivot 不存在于列表 key 时,不执行任何操作。

                                                                                  示例:

                                                                                    127.0.0.1:6379> linsert NoSQL before Redis MemcacheDB
                                                                                    (integer) 4
                                                                                    127.0.0.1:6379> 
                                                                                    127.0.0.1:6379> lrange NoSQL 0 -1
                                                                                    1) "MongoDB"
                                                                                    2) "Hbase"
                                                                                    3) "MemcacheDB"
                                                                                    4) "Redis"

                                                                                    10. RPOPLPUSH/ BRPOPLPUSH

                                                                                    格式:

                                                                                    rpoplpush source destination/ brpoplpush source destination timeout

                                                                                    说明:命令 RPOPLPUSH 在一个原子时间内,执行以下两个动作:

                                                                                    • 将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。

                                                                                    •  source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。

                                                                                    BRPOPLPUSH  RPOPLPUSH 的阻塞版本,当列表source不为空时, BRPOPLPUSH的表现和 RPOPLPUSH 一样。当列表 source 为空时,BRPOPLPUSH 命令将阻塞连接,直到等待超时,或有另一个客户端对 source 执行 LPUSH  RPUSH 命令为止。超时参数 timeout 接受一个以秒为单位的数字作为值。超时参数设为 0 表示阻塞时间可以无限期延长(block indefinitely)。

                                                                                    示例:

                                                                                      127.0.0.1:6379> lpush name1 jack lucy lili
                                                                                      (integer) 3
                                                                                      127.0.0.1:6379> lpush name2 tom ming hong
                                                                                      (integer) 3
                                                                                      127.0.0.1:6379> rpoplpush name1 name2
                                                                                      "jack"
                                                                                      127.0.0.1:6379> lrange name1 0 -1
                                                                                      1) "lili"
                                                                                      2) "lucy"
                                                                                      127.0.0.1:6379> lrange name2 0 -1
                                                                                      1) "jack"
                                                                                      2) "hong"
                                                                                      3) "ming"
                                                                                      4) "tom"

                                                                                      HList(列表)

                                                                                      1. SADD

                                                                                      格式:sadd key member [member ...]

                                                                                      说明:将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。假如 key 不存在,则创建一个只包含 member 元素作成员的集合。

                                                                                      示例:

                                                                                        127.0.0.1:6379> sadd class 'tom' 'jack' 'jim'
                                                                                        (integer) 3

                                                                                        2. SREM

                                                                                        格式:srem key member [member ...]

                                                                                        说明:移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。

                                                                                        示例:

                                                                                          127.0.0.1:6379> srem class tom
                                                                                          (integer) 1

                                                                                          3. SMEMBERS

                                                                                          格式:smembers key

                                                                                          说明:返回集合 key 中的所有成员。

                                                                                          示例:

                                                                                            127.0.0.1:6379> smembers class
                                                                                            1) "jim"
                                                                                            2) "jack"

                                                                                            4. SISMEMBER

                                                                                            格式:sismember key member

                                                                                            说明:判断 member 元素是否集合 key 的成员。

                                                                                            示例:

                                                                                              127.0.0.1:6379> sismember class tom
                                                                                              (integer) 0
                                                                                              127.0.0.1:6379> sismember class jim
                                                                                              (integer) 1

                                                                                              5. SCARD

                                                                                              格式:scard key

                                                                                              说明:返回集合 key 中的元素数量。

                                                                                              示例:

                                                                                                127.0.0.1:6379> scard class
                                                                                                (integer) 2

                                                                                                6. SMOVE

                                                                                                格式:smove source destination member

                                                                                                说明:将 member 元素从 source 集合移动到 destination 集合。SMOVE 是原子性操作。如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。当destination 集合已经包含 member 元素时,SMOVE 命令只是简单地将 source 集合中的 member 元素删除。

                                                                                                示例:

                                                                                                  127.0.0.1:6379> smove class class2 tom
                                                                                                  (integer) 1

                                                                                                  7. SPOP

                                                                                                  格式:pop key

                                                                                                  说明:移除并返回集合中的一个随机元素。

                                                                                                  示例:

                                                                                                    127.0.0.1:6379> spop class
                                                                                                    "jim"

                                                                                                    8. SRANDMEMBER

                                                                                                    格式:srandmember key [count]

                                                                                                    说明:返回集合中的count个随机元素,该操作和 SPOP 相似,但 SPOP 将随机元素从集合中移除并返回,而 SRANDMEMBER 则仅仅返回随机元素,而不对集合进行任何改动。

                                                                                                    示例:

                                                                                                      127.0.0.1:6379> srandmember class2 2
                                                                                                      1) "lili"
                                                                                                      2) "tom"

                                                                                                      9. SINTER/ SINTERSTORE

                                                                                                      格式:

                                                                                                      sinter key [key ...]/ sinterstore destination key [key ...]

                                                                                                      说明:返回一个集合的全部成员,该集合是所有给定集合的交集。两个命令的区别是sinterstore会将结果保存到 destination 集合。

                                                                                                      示例:

                                                                                                        127.0.0.1:6379> sinter class class2
                                                                                                        1) "tom"
                                                                                                        127.0.0.1:6379> sinterstore class1  class class2
                                                                                                        (integer) 1
                                                                                                        127.0.0.1:6379> smembers class1
                                                                                                        1) "tom"

                                                                                                        10. SUNION/ SUNIONSTORE

                                                                                                        格式:

                                                                                                        sunion key [key ...]/ sunionstore destination key [key ...]

                                                                                                        说明:返回一个集合的全部成员,该集合是所有给定集合的并集。两个命令的区别是SUNIONSTORE会将结果保存到 destination 集合。

                                                                                                        示例:

                                                                                                          127.0.0.1:6379> sunion class1 class2
                                                                                                          1) "jim"
                                                                                                          2) "lucy"
                                                                                                          3) "tom"
                                                                                                          4) "jack"
                                                                                                          5) "lili"
                                                                                                          127.0.0.1:6379> sunionstore class class1 class2
                                                                                                          (integer) 5
                                                                                                          127.0.0.1:6379> 
                                                                                                          127.0.0.1:6379> smembers class
                                                                                                          1) "jim"
                                                                                                          2) "lucy"
                                                                                                          3) "tom"
                                                                                                          4) "jack"
                                                                                                          5) "lili"

                                                                                                          11. SDIFF/ SDIFFSTORE

                                                                                                          格式:

                                                                                                          sdiff key [key ...]/ sdiffstore destination key [key ...]

                                                                                                          说明:返回一个集合的全部成员,该集合是所有给定集合之间的差集。sdiffstore命令会它将结果保存到 destination 集合。

                                                                                                          示例:

                                                                                                            127.0.0.1:6379> sdiff class1 class2
                                                                                                            1) "jim"
                                                                                                            2) "tom"
                                                                                                            3) "jack"
                                                                                                            127.0.0.1:6379> sdiffstore class_diff class1 class2
                                                                                                            (integer) 3
                                                                                                            127.0.0.1:6379> smembers class_diff
                                                                                                            1) "jim"
                                                                                                            2) "tom"
                                                                                                            3) "jack"

                                                                                                             Sorted Set(有序集)

                                                                                                            1. ZADD

                                                                                                            格式:

                                                                                                            zadd key [NX|XX] [CH] [INCR] score member [score member ...]

                                                                                                            说明:将一个或多个 member 元素及其 score 值加入到有序集 key 当中。如果某个 member 已经是有序集的成员,那么更新这个 member  score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。

                                                                                                            示例:

                                                                                                              127.0.0.1:6379> zadd class1 98 jack 87 tom 91 jim
                                                                                                              (integer) 3

                                                                                                              2. ZREM

                                                                                                              格式:zrem key member [member ...]

                                                                                                              说明:移除有序集 key 中的一个或多个成员,不存在的成员将被忽略

                                                                                                              示例:

                                                                                                                127.0.0.1:6379> zrem class1 jack
                                                                                                                (integer) 1

                                                                                                                3. ZCARD

                                                                                                                格式:zcard key

                                                                                                                说明:返回有序集 key 的基数。

                                                                                                                示例:

                                                                                                                  127.0.0.1:6379> zcard class1
                                                                                                                  (integer) 2

                                                                                                                  4. ZCOUNT

                                                                                                                  格式:zcount key min max

                                                                                                                  说明:返回有序集 key 中, score 值在 min  max 之间(默认包括 score 值等于 min 

                                                                                                                  max )的成员的数量

                                                                                                                  示例:

                                                                                                                    127.0.0.1:6379> zcount class1 90 100
                                                                                                                    (integer) 2

                                                                                                                    5. ZSCORE

                                                                                                                    格式:zscore key member

                                                                                                                    说明:返回有序集 key 中,成员 memberscore值。如果member元素不是有序集 key的成员,或 key 不存在,返回 nil 

                                                                                                                    示例:

                                                                                                                      127.0.0.1:6379> zscore class1 jack
                                                                                                                      "98"

                                                                                                                      6. ZINCRBY

                                                                                                                      格式:zincrby key increment member

                                                                                                                      说明:为有序集 key的成员memberscore值加上增量increment。可以通过传递一个负数值increment,score减去相应的值,比如 ZINCRBY key -5 member ,就是让 member  score 值减去 5 

                                                                                                                      示例:

                                                                                                                        127.0.0.1:6379> zincrby class1 -2 jack
                                                                                                                        "96"

                                                                                                                        7. ZRANGE/ ZREVRANGE/ ZRANGEBYSCORE/ ZREVRANGEBYSCORE

                                                                                                                        格式:

                                                                                                                        zrange key start stop [WITHSCORES]/ zrevrange key start stop [WITHSCORES]/ zrangebyscore key min max [WITHSCORES] [LIMIT offset count]/ zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]

                                                                                                                        说明:返回有序集 key 中,指定区间内的成员。具体区别如下:

                                                                                                                        zrange:返回的成员的位置按 score 值递增(从小到大)来排序。具有相同 score 值的成员按字典序来排列。

                                                                                                                        zrevrange:返回的成员的位置按 score 值递减(从大到小)来排列。具有相同 score 值的成员按字典序的逆序排列

                                                                                                                        zrangebyscore:返回有序集 key 中,所有 score 值介于 min  max 之间(包括等于 min  max )的成员。有序集成员按 score 值递增(从小到大)次序排列。具有相同 score 值的成员按字典序来排列。可选的 WITHSCORES 参数决定结果集是单单返回有序集的成员,还是将有序集成员及其score 值一起返回,LIMIT 参数指定返回结果的数量及区间。

                                                                                                                        zrevrangebyscore:返回有序集 key 中, score 值介于 max  min 之间(默认包括等于 max  min )的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列。具有相同 score 值的成员按字典序的逆序排列。可选的 WITHSCORES 参数决定结果集是单单返回有序集的成员,还是将有序集成员及其score 值一起返回LIMIT 参数指定返回结果的数量及区间。

                                                                                                                        示例:

                                                                                                                          127.0.0.1:6379> zrange class1 0 -1
                                                                                                                          1) "ming"
                                                                                                                          2) "long"
                                                                                                                          3) "tom"
                                                                                                                          4) "jim"
                                                                                                                          5) "jack"
                                                                                                                          127.0.0.1:6379> zrevrange class1 0 -1
                                                                                                                          1) "jack"
                                                                                                                          2) "jim"
                                                                                                                          3) "tom"
                                                                                                                          4) "long"
                                                                                                                          5) "ming"
                                                                                                                          127.0.0.1:6379> zrangebyscore class1 80 100 withscores
                                                                                                                          1) "tom"
                                                                                                                          2) "87"
                                                                                                                          3) "jim"
                                                                                                                          4) "91"
                                                                                                                          5) "jack"
                                                                                                                          6) "96"
                                                                                                                          127.0.0.1:6379> zrevrangebyscore class1 100 80 withscores
                                                                                                                          1) "jack"
                                                                                                                          2) "96"
                                                                                                                          3) "jim"
                                                                                                                          4) "91"
                                                                                                                          5) "tom"
                                                                                                                          6) "87"

                                                                                                                          8. ZRANK/ ZREVRANK

                                                                                                                          格式:

                                                                                                                          zrank key member / zrevrank key member

                                                                                                                          说明:返回有序集key中成员member的排名。其中ZRANK命令是按 score 值递增(从小到大)顺序排列。ZREVRANK命令是按 score 值递增(从大到小)顺序排列

                                                                                                                          示例:

                                                                                                                            127.0.0.1:6379> zrank class1 jack
                                                                                                                            (integer) 4
                                                                                                                            127.0.0.1:6379> zrevrank class1 jack
                                                                                                                            (integer) 0

                                                                                                                            9. ZREMRANGEBYRANK

                                                                                                                            格式:ZREMRANGEBYRANK key start stop说明:移除有序集 key 中,指定排名(rank)区间内的所有成员

                                                                                                                            示例:

                                                                                                                              127.0.0.1:6379> zremrangebyrank class1 0 1
                                                                                                                              (integer) 2

                                                                                                                              10. ZREMRANGEBYSCORE

                                                                                                                              格式:zremrangebyscore key min max

                                                                                                                              说明:移除有序集 key 中,所有 score 值介于 min  max 之间(包括等于 min  max )的成员

                                                                                                                              示例:

                                                                                                                                127.0.0.1:6379> zremrangebyscore class1 70 80
                                                                                                                                (integer) 1

                                                                                                                                11. ZINTERSTORE

                                                                                                                                格式:

                                                                                                                                zinterstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] 

                                                                                                                                说明:计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之和。

                                                                                                                                WEIGHTS

                                                                                                                                使用 WEIGHTS 选项,你可以为 每个 给定有序集 分别 指定一个乘法因子(multiplication factor),每个给定有序集的所有成员的 score 值在传递给聚合函数(aggregation function)之前都要先乘以该有序集的因子。如果没有指定 WEIGHTS 选项,乘法因子默认设置为 1 

                                                                                                                                AGGREGATE

                                                                                                                                使用 AGGREGATE 选项,你可以指定并集的结果集的聚合方式。默认使用的参数 SUM ,可以将所有集合中某个成员的 score 值之和作为结果集中该成员的 score 值;使用参数 MIN ,可以将所有集合中某个成员的 最小 score 值作为结果集中该成员的 score 值;而参数 MAX 则是将所有集合中某个成员的 最大 score 值作为结果集中该成员的 score 值。

                                                                                                                                示例:

                                                                                                                                  127.0.0.1:6379> zinterstore class 2 class1 class2 
                                                                                                                                  (integer) 1
                                                                                                                                  127.0.0.1:6379> zrange class 0 -1 WITHSCORES
                                                                                                                                  1) "jim"
                                                                                                                                  2) "181"

                                                                                                                                  12. ZUNIONSTORE

                                                                                                                                  格式:

                                                                                                                                  zunionstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

                                                                                                                                  说明:计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination WEIGHTSAGGREGATE参数参见ZINTERSTORE

                                                                                                                                  示例:

                                                                                                                                    127.0.0.1:6379> zadd programmer 2000 jack 3000 peter 5000 jim
                                                                                                                                    (integer) 3
                                                                                                                                    127.0.0.1:6379> zadd manager 4500 lucy 6500 lili 8000 hanmei
                                                                                                                                    (integer) 3
                                                                                                                                    # programmer 集合中的score不变,manager集合中的score乘以3后求并集。
                                                                                                                                    127.0.0.1:6379> ZUNIONSTORE salary 2 programmer manager WEIGHTS 1 3 AGGREGATE sum 
                                                                                                                                    (integer) 6
                                                                                                                                    127.0.0.1:6379> zrange salary 0 -1 WITHSCORES
                                                                                                                                     1) "jack"
                                                                                                                                     2) "2000"
                                                                                                                                     3) "peter"
                                                                                                                                     4) "3000"
                                                                                                                                     5) "jim"
                                                                                                                                     6) "5000"
                                                                                                                                     7) "lucy"
                                                                                                                                     8) "13500"
                                                                                                                                     9) "lili"
                                                                                                                                    10) "19500"
                                                                                                                                    11) "hanmei"
                                                                                                                                    12) "24000"

                                                                                                                                    ----------------------------------------

                                                                                                                                    原创不易,每篇文章都是作者工作之余熬夜整理与创作,如果觉得文章对您有帮助的话,关注、转发、分享、点在看都是对作者的一种鼓励,您的鼓励将是我持续发表高质量文章的最大动力。

                                                                                                                                    关注MySQL

                                                                                                                                    数据库技术栈

                                                                                                                                    MySQL

                                                                                                                                    往期推荐

                                                                                                                                    【redis】部署及参数详解(吐血整理,建议收藏)

                                                                                                                                    【MySQL】删库别着急跑路(一)--Xtrabackup的原理及使用

                                                                                                                                    【MySQL】删库别着急跑路(二)--mysqldump的使用

                                                                                                                                    【MySQL】删库别着急跑路(三)--binlog2sql闪回工具的使用

                                                                                                                                    最后修改时间:2020-06-22 09:16:58
                                                                                                                                    文章转载自MySQL数据库技术栈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                                                                                                    评论