Redis 命令
使用ssh连接到服务器
在命令行输入
redis-cli -h 主机地址 -p 端口号 -a 密码
连接到Redis服务器上
此时可能出现Warning: Using a password with ‘-a’ or ‘-u’ option on the command line interface may not be safe.这个不用管 已经连接到Redis上了
常用命令
字符串
字符串key值区分大小写
- SET {key} {value}{EX|PX|NX|XX}
设置一个字符串key和值 可设置过期时间。
SET aa succ EX 5 //设置过期时间为5秒 PX参数为毫秒
SET aa succ NX //只在键不存在时, 才对键进行设置操作 相当于SETNX aa succ
SET aa succ XX //只在键存在时, 才对键进行设置操作 (覆盖) 相当于SETXX aa succ
-
GET {key}
返回与键 key 相关联的字符串值。
返回值:
如果键 key 不存在, 那么返回特殊值 nil ; 否则, 返回键 key 的值。
如果键 key 的值并非字符串类型, 那么返回一个错误, 因为 GET 命令只能用于字符串值 -
GETSET{key,value}
将键 key 的值设为 value , 并返回键 key 在被设置之前的旧值。
如果键 key 没有旧值, 也即是说, 键 key 在被设置之前并不存在, 那么命令返回 nil 。
当键 key 存在但不是字符串类型时, 命令返回一个错误。 -
STRLEN{key}
返回键 key 储存的字符串值的长度。
当键 key 不存在时, 命令返回 0 。
当 key 储存的不是字符串值时, 返回一个错误。 -
APPEND{key,value}
如果键 key 已经存在并且它的值是一个字符串, APPEND 命令将把 value 追加到键 key 现有值的末尾。
如果 key 不存在, APPEND 就简单地将键 key 的值设为 value , 就像执行 SET key value 一样。
追加 value 之后, 键 key 的值的长度。 -
SETRANGE{key offset value}
从偏移量offset开始,使用value替换原字符串的值,如果偏移量大于原字符串的长度,中间的空白将用零字节(zerobytes, “\x00” )进行填充 -
GETRANGE{key start end}
截取字符串(不影响key本身) -
INCR{key} /DECR{key}
为键 key 储存的数字值加/减上一。(会影响key本身的值)
如果键 key 不存在, 那么它的值会先被初始化为 0 , 然后再执行 INCR/DECR 命令。
如果键 key 储存的值不能被解释为数字, 那么 INCR/DECR 命令将返回一个错误。 -
INCRBY{key value} / DECRBY{key value}
为键 key 储存的数字值加/减上值value 。
如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 INCRBY/DECRBY 命令。
如果键 key 储存的值不能被解释为数字, 那么 INCRBY/DECRBY 命令将返回一个错误。 -
INCRBYFLOAT{key value}
为键 key 储存的值加上浮点数增量 increment 。
如果键 key 不存在, 那么 INCRBYFLOAT 会先将键 key 的值设为 0 , 然后再执行加法操作。
如果命令执行成功, 那么键 key 的值会被更新为执行加法计算之后的新值, 并且新值会以字符串的形式返回给调用者。 -
MSET{key1 value1 key2 value2 key3 value3…}
同时为多个键设置值。
如果某个给定键已经存在, 那么 MSET 将使用新值去覆盖旧值, 如果这不是你所希望的效果, 请考虑使用 MSETNX 命令, 这个命令只会在所有给定键都不存在的情况下进行设置。
MSET 是一个原子性(atomic)操作, 所有给定键都会在同一时间内被设置, 不会出现某些键被设置了但是另一些键没有被设置的情况。 -
MSETNX{key1 value1 key2 value2 key3 value3…}
当且仅当所有给定键都不存在时, 为所有给定键设置值。
即使只有一个给定键已经存在, MSETNX 命令也会拒绝执行对所有键的设置操作。
MSETNX 是一个原子性(atomic)操作, 所有给定键要么就全部都被设置, 要么就全部都不设置, 不可能出现第三种状态。
返回值
当所有给定键都设置成功时, 命令返回 1 ; 如果因为某个给定键已经存在而导致设置未能成功执行, 那么命令返回 0 。 -
MGET{key1 key2 key3 …}
返回给定的一个或多个字符串键的值。
如果给定的字符串键里面, 有某个键不存在, 那么这个键的值将以特殊值 nil 表示。
哈希表
-
HSET{table field value}
将哈希表 hash 中域 field 的值设置为 value 。
如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行 HSET 操作。
如果域 field 已经存在于哈希表中, 那么它的旧值将被新值 value 覆盖 -
HSETNX{table field value}
当且仅当域 field 尚未存在于哈希表的情况下, 将它的值设置为 value 。
如果给定域已经存在于哈希表当中, 那么命令将放弃执行设置操作。(无法覆盖原有值)
如果哈希表 hash 不存在, 那么一个新的哈希表将被创建并执行 HSETNX 命令。 -
HGET{table field}
返回哈希表中给定域的值。 -
HEXISTS{table field}
检查给定域 field 是否存在于哈希表 hash 当中。
返回值
HEXISTS 命令在给定域存在时返回 1 , 在给定域不存在时返回 0 。 -
HDEL{table field1 field2…}
删除哈希表中的一个或多个指定域,不存在的域将被忽略。 -
HLEN{table}
返回哈希表中字段的数量 -
HSTRLEN{table field}
返回哈希表 key 中, 与给定域 field 相关联的值的字符串长度(string length)。
如果给定的键或者域不存在, 那么命令返回 0 。 -
HINCRBY{table field value}
为哈希表 key 中的域 field 的值加上增量 increment 。(影响原值)
增量也可以为负数,相当于对给定域进行减法操作。
如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。
对一个储存字符串值的域 field 执行 HINCRBY 命令将造成一个错误。 -
HINCRBYFLOAT{table field value}
为哈希表 key 中的域 field 加上浮点数增量 increment 。
如果哈希表中没有域 field ,那么 HINCRBYFLOAT 会先将域 field 的值设为 0 ,然后再执行加法操作。
如果键 key 不存在,那么 HINCRBYFLOAT 会先创建一个哈希表,再创建域 field ,最后再执行加法操作。
当以下任意一个条件发生时,返回一个错误:
域 field 的值不是字符串类型(因为 redis 中的数字和浮点数都以字符串的形式保存,所以它们都属于字符串类型)
域 field 当前的值或给定的增量 increment 不能解释(parse)为双精度浮点数(double precision floating point number) -
HMSET{table field1 value1 field2 value2…}
同时将多个 field-value (域-值)对设置到哈希表 key 中。
此命令会覆盖哈希表中已存在的域。
如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。 -
HMGET{table field1 field2 field3…}
返回哈希表 key 中,一个或多个给定域的值。
如果给定的域不存在于哈希表,那么返回一个 nil 值。
因为不存在的 key 被当作一个空哈希表来处理,所以对一个不存在的 key 进行 HMGET 操作将返回一个只带有 nil 值的表。 -
HKEYS{table}
一个包含哈希表中所有域的表。
当 key 不存在时,返回一个空表。 -
HVALS{table}
返回哈希表 key 中所有域的值。 -
HGETALL{table}
返回哈希表 key 中,所有的域和值。
在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。
返回:
1)key1
2)value1
3)key2
4)value2 -
HSCAN{}
未知???
列表
-
LPUSH{list value1 value2…}
将一个或多个值 value 插入到列表 list 的表头,返回列表的长度 -
LPUSHX{list value}
将值 value 插入到列表 list 的表头,当且仅当 list 存在并且是一个列表。
如果key不存在,命令无效 -
RPUSH{list value1 value2…}
将一个或多个值 value 插入到列表 list 的表尾(最右边),返回列表的长度 -
RPUSHX{list value}
将值 value 插入到列表 list 的表头,当且仅当 list 存在并且是一个列表。
如果list 不存在,命令无效 -
LPOP{value}
移除并返回列表 list 的头元素。
返回值:列表的头元素(当前移出的元素)。 当 list 不存在时,返回 nil 。 -
RPOP{value}
移除并返回列表 list 的尾元素。
返回值:列表的尾元素(当前移出的元素)。 当 list 不存在时,返回 nil 。 -
RPOPLPUSH{list1 list2}
将列表1的尾元素移出,插入到list2的表头
如果 list1 不存在,值 nil 被返回,并且不执行其他动作。
如果 list1 和 list2 相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转(rotation)操作。
返回值:被弹出的元素 -
LREM{list count value}
移除列表中的所有值为value的元素
count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
count = 0 : 移除表中所有与 value 相等的值。 -
LLEN{list}
返回列表的长度 -
LINDEX{list index}
返回列表中的下标为 index 的元素。
index >= 0 :从表头开始计算
index <0 :从表尾开始计算 -
LINSERT{list BEFORE|AFTER new_value value}
将值 new_value 插入到列表 key 当中,位于值 value之前或之后。
当 value不存在于列表 list时,不执行任何操作,返回-1
当 list不存在时, list被视为空列表,不执行任何操作,返回 0
如果 list不是列表类型,返回一个错误
如果命令执行成功,返回插入操作完成之后,列表的长度。 -
LSET{list index value}
将列表 list 下标为 index 的元素的值设置为 value 。
当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。
操作成功返回 ok ,否则返回错误信息。 -
LRANGE{list start end}
返回列表中的value start为起始下标 end为结束下标 如果为-1就是返回整个列表 -
LTRIM{list start end}
截取列表中指定下标范围的value 与编程语言的trim函数清除不一样(坑)
命令执行成功时,返回 ok 。 -
BLPOP{list timeout}
阻塞模式弹出列表的第一个value
LPOP的阻塞模式,直到timeout时间结束前 将阻塞连接,直到等待超时
超时参数 timeout 接受一个以秒为单位的数字作为值。超时参数设为 0 表示阻塞时间可以无限期 -
BRPOP{list timeout}
阻塞模式弹出列表的最后一个value
RPOP的阻塞模式,直到timeout时间结束前 将阻塞连接,直到等待超时
超时参数 timeout 接受一个以秒为单位的数字作为值。超时参数设为 0 表示阻塞时间可以无限期 -
BRPOPLPUSH{list1 list2}
RPOPLPUSH的阻塞模式
将列表 list1中的最后一个元素(尾元素)弹出,并返回给客户端。
将 list1弹出的元素插入到列表 list2,作为 list2列表的的头元素
超时参数 timeout 接受一个以秒为单位的数字作为值。超时参数设为 0 表示阻塞时间可以无限期
集合
- SADD
- SISMEMBER
- SPOP
- SRANDMEMBER
- SREM
- SMOVE
- SCARD
- SMEMBERS
- SSCAN
- SINTER
- SINTERSTORE
- SUNION
- SUNIONSTORE
- SDIFF
- SDIFFSTORE
#有序集合
- ZADD
- ZSCORE
- ZINCRBY
- ZCARD
- ZCOUNT
- ZRANGE
- ZREVRANGE
- ZRANGEBYSCORE
- ZREVRANGEBYSCORE
- ZRANK
- ZREVRANK
- ZREM
- ZREMRANGEBYRANK
- ZREMRANGEBYSCORE
- ZRANGEBYLEX
- ZLEXCOUNT
- ZREMRANGEBYLEX
- ZSCAN
- ZUNIONSTORE
- ZINTERSTORE