基本
Redis 命令不区分大小
基础命令
- keys
- 命令含义:查找所有符合给定模式pattern(正则表达式)的 key
- 命令格式:
KEYS pattern
- exists
- 命令含义:返回key是否存在
- 命令格式:
EXISTS key [key ...]- 返回
1表示存在。
- 返回
- expire
- 命令含义:设置key的过期时间,超过时间后,将会自动删除该key
- 命令格式:
EXPIRE key seconds- 如果
key存在且未过期,再次执行可以刷新过期时间。 seconds单位为秒。
- 如果
- ttl
- 命令含义:返回key剩余的过期时间
- 命令格式:
TTL key- 如果
key不存在或已过期,返回-2 - 如果
key存在且没有设置过期时间,返回-1
- 如果
- move
- 命令含义:将当前数据库的
key移动到给定的数据库db当中 - 命令格式:
MOVE key db- 如果目标数据库中有给定的
key,或者key不存在于当前数据库,即move不会生效
- 如果目标数据库中有给定的
- 命令含义:将当前数据库的
- type
- 命令含义:返回
key所存储的value的数据结构类型,它可以返回string, list, set, zset和hash等不同的类型 - 命令格式:
TYPE key
- 命令含义:返回
- persist
- 命令含义:移除给定
key的过期时间 - 命令格式:
PERSIST key
- 命令含义:移除给定
- del
- 命令含义:删除指定的一批
keys,如果删除中的某些key不存在,则直接忽略 - 命令格式:
DEL key [key ...]
- 命令含义:删除指定的一批
字符串 String
命令
- SET
- 命令含义:将键 key 设定为指定的“字符串”值
- 命令格式:
SET key value [EX seconds] [PX milliseconds] [NX|XX]- 如果
key已存在,直接覆盖 - 如果有过期时间,会刷新
EX表示过期时间以秒为单位PX表示过期时间以毫秒为单位NX表示只有key不存在时才设置key的值XX表示只有key存在时才设置key的值
- 如果
- 注意
- 由于
SET命令加上选项已经可以完全取代SETNX, SETEX, PSETEX的功能,所以在将来的版本中,redis 可能会不推荐使用并且最终抛弃这几个命令
- 由于
- GET
- 命令含义:返回
key的value - 命令格式:
GET key- 如果
key不存在,返回nil - 如果
key的value不是string, 返回错误。
- 如果
- 命令含义:返回
- GETRANGE
- 命令含义:获取字符串的子字符串
- 命令格式:
GETRANGE key start endstart和end可以为正数或负数。正数即从左边开始计算,负数即从右边开始计算。-1就是最后一个字符,-2就是倒数第二个。
- GETset
- 命令含义:先获取
key的旧值,然后给key设置新值 - 命令格式:
GETSET key newvaluenewvalue表示新值
- 命令含义:先获取
- APPEND
- 命令含义:追加
value到原本value的末尾 - 命令格式:
APPEND key value- 如果
key存在,则在原值尾部追加值 - 如果
key不存在,则新建key然后执行追加操作
- 如果
- 命令含义:追加
- SETRANGE
- 命令含义:覆盖对应
key的value值的指定区间 - 命令格式:
SETRANGE key offset value-
如果
offset偏移量超过现有string值的长度,则需要补够0值以达到offset,offset最大长度为
-
- 命令含义:覆盖对应
- STRLEN
- 命令含义:返回
key的string类型value的长度 - 命令格式:
STRLEN keykey非string类型,会返回错误
- 命令含义:返回
- SETNX
- 命令含义:将
key设置值为value,如果key不存在,这种情况下等同SET命令。 当key存在时,什么也不做。SETNX是 “SET if Not eXists” 的简写。 - 命令格式:
SETNX key value
- 命令含义:将
- SETEX
- 命令含义:设置
key对应字符串value,并且设置key在给定的seconds时间之后超时过期 - 命令格式:
SETEX key seconds value
- 命令含义:设置
- INCR
- 命令含义:对存储在指定
key的数值执行原子的加1操作 - 命令格式:
INCR key- 如果指定的
key不存在,那么在执行incr操作之前,会先将它的值设定为0 - 如果指定
key存在,但是值不是字符类型或值不能表示为整数,即返回错误 - 这个操作仅限于
64位的有符号整型数据
- 如果指定的
- 命令含义:对存储在指定
- INCRBY
- 命令含义:将
key对应的数字加上指定步长decrement - 命令格式:
INCRBY key incrementkey不存在,即会先设置成 0key存在但不是数字型的字符,即返回错误- 操作最多支持
64位有符号的正型数字
- 命令含义:将
- DECR
- 命令含义:对
key对应的数字做减1操作 - 命令格式:
DECR key
- 命令含义:对
- DECRBY
- 命令含义:将
key对应的数字减去指定步长decrement - 命令格式:
DECRBY key decrement
- 命令含义:将
列表 List
命令
LPUSH- 命令含义:往列表左边第一个位置插入值(列表不存在,会自动创建新列表)
- 命令格式:
LPUSH key element1 element2 element3
RPUSH- 命令含义:往列表右边第一个位置插入值(列表不存在,会自动创建新列表)
- 命令格式:
RPUSH key element1 element2 element3
LPUSHX- 命令含义:当列表存在时,往列表左边第一个位置插入值
- 命令格式:
LPUSHX key element1 element2 element3
RPUSHX- 命令含义:当列表存在时,往列表右边第一个位置插入值
- 命令格式:
RPUSHX key element1 element2 element3
LPOP- 命令含义:弹出列表左边第一个位置的元素
- 命令格式:
LPOP key- key 不存在时,返回 nil
RPOP- 命令含义:弹出列表右边第一个位置的元素
- 命令格式:
RPOP key- key 不存在时,返回 nil
- BLPOP
- 命令含义:阻塞式列表。如果给定的
key至少有一个非空列表,那么弹出遇到的第一个非空列表的头元素,并和被弹出元素所属的列表的名字 key 一起,组成结果返回给调用者。如果给定的key不存在或包含空列表,BLPOP将阻塞连接,直到有另一个客户端对给定的这些key的任意一个执行LPUSH或RPUSH命令为止。 - 命令格式:
BLPOP list1 list2 list3 timeout- 如果 list1 为空,list2 不为空,那么会返回list2 的第一个元素和list2 名;
- 如果 list1 list2 list3 均为空或不存在,那么会发起阻塞,等待列表插入元素
- timeout 用于设置阻塞时长的非零的超时参数。当timeout=0 时,阻塞时间无限制。
- 命令含义:阻塞式列表。如果给定的
- BRPOP
- 命令含义:含义同
BLPOP一致。区别在于从列表的尾部(右边)开始弹出元素 - 命令格式:
BRPOP list1 list2 list3 timeout- 按
list1 > list2 > list3顺序开始检查非空列表,如果list1为空,list2不为空,即返回list2尾部的第一个元素。
- 按
- 命令含义:含义同
LRANGE- 命令含义:返回列表中指定范围内的元素。
- 命令格式:
LRANGE key start endstart和end都是基于 0 开始的偏移量。start和end可以是负数。-1表示列表的最后一个元素,-2是倒数第二元素。- 如:
LRANGE mylist 0 -1表示输出列表的所有元素。
- 如:
LINDEX- 命令含义:返回列表中指定下标的值,下标从
0开始索引。 - 命令格式:
LINDEX key indexkey不是一个列表时,返回errorindex可以为负数。-1表示最后一个元素,-2表示倒数第二个元素
- 命令含义:返回列表中指定下标的值,下标从
LLEN- 命令含义:返回列表的长度。
- 命令格式:
LLEN keykey不存在时,返回0key存在,但不是列表时, 返回error
LREM- 命令含义:从列表中移除指定数量的特定元素
- 命令格式:
LREM list count elementlist是列表名字count是移除数量count > 0从左边到右边开始移除匹配到的元素count = 0移除所有匹配的元素count < 0从右边到左边开始移除匹配到的元素
element指定元素值
LTRIM- 命令含义:截取列表的元素,也就是求列表的子集合。
- 命令格式:
LTRIM key start stopstart和stop是由0开始计数。0表示列表第一个元素。- 如
LTRIM mylist 0 2结果只保留列表前3个元素。
- 如
RPOPLPUSH-start和stop可以是负数,-1表示列表里的最后一个元素,-2表示倒数第二个- 命令含义:弹出源列表右边的第一个元素,并插入到目标列表的左边的第一个位置。
- 命令格式:
RPOPLPUSH source destinationsource源列表。如果source不存在,返回nil,不继续执行任何操作。destination目标列表。- 如果
source和destination指向同一个列表,那么相等于移除列表最后一个元素(右边第一个元素),并插入到列表的头部(左边)
BRPOPLPUSH- 命令含义:
RPOPLPUSH的阻塞版。 - 命令格式:
BRPOPLPUSH source destination timeouttimeout非零的阻塞时间。timeout = 0即无限期阻塞客户端连接。
- 命令含义:
LSET- 命令含义:设置列表中指定下标位置(
index)的值为指定值(value) - 命令格式:
LSET key index valueindex超出范围,会返回error
- 命令含义:设置列表中指定下标位置(
LINSERT- 命令含义:向列表中的指定元素值的前面或后面插入值。
- 命令格式:
LINSERT key BEFORE|AFTER pivot valuekey不存在时,不会执行任何操作。key存在,但**不是一个list**时,返回 error
- 命令示例:
LINSERT mylist BEFORE "world" "There"- 表示向
mylist列表中的world元素之前插入There元素
- 表示向
集合 Set
命令
-
SADD- 命令含义:添加一个或多个指定的member元素到集合的 key中
- 命令格式:
SADD key member [member ...]- 如果集合
key不存在,则新建一个集合,并将元素添加到集合中 - 如果元素已在集合
key中存在,则会忽略该元素,继续插入其它元素 - 如果
key的类型不是集合,则返回错误 Redis版本>= 2.4,可以接受多个参数;2.4以前的版本每次只允许添加一个元素
- 如果集合
-
SPOP- 命令含义:从
key集合中移除并返回一个或多个随机元素 - 命令格式:
SPOP key [count]count表示要从集合key中移除并返回多少个随机元素count在低版本中不可使用该参数,在2.6 、2.8、3.0版本中也不可以使用该参数count当所传参数数值大于集合的元素数量,会返回整个集合key不存在时,返回nil
- 命令含义:从
-
SCARD- 命令含义:返回集合的元素数量
- 命令格式:
SCARD keykey不存在时,返回0
-
SREM- 命令含义:从集合中移除指定的元素
- 命令格式:
SREM key member [member ...]- 如果
key不是一个集合,则返回错误 - 如果
key集合不存在,则返回0 - 可指定多个元素参数,低于
2.4的版本只能指定一个元素参数 - 如果
key集合中不存在指定的元素,则忽略
- 如果
-
SMOVE- 命令含义:将一个元素从源集合移动到目标集合中
- 命令格式:
SMOVE source destination member- 如果
source源集合不存在,则不执行任何操作并返回0 - 如果
source源集合不包含指定元素,则不执行任何操作并返回0 - 从
source源集合移除指定元素,并添加到destination目标集合中,执行成功后返回1 - 如果
destination目标集合存在指定元素,则命令执行之后只会移除source源集合的元素 - 如果
sourcedestination不是集合类型,则返回错误
- 如果
-
SISMEMBERS- 命令含义:判断集合中是否存在指定元素
- 命令格式:
SISMEMBER key member- 如果存在,则返回
1;不存在则返回0
- 如果存在,则返回
-
SMEMBERS- 命令含义:返回key集合所有的元素
- 命令格式:
SMEMBERS key
-
SRANDMEMBER- 命令含义:随机返回集合中指定数量的元素
- 命令格式:
SRANDMEMBER key [count]- 命令执行,不会移除集合中的元素
Redis 2.6开始,可以接受count参数- 如果
count是正数且大于集合的元素总数,则返回集合的全部元素,没有额外的元素,不会存在重复元素 - 如果
count是正数且小于集合的元素总数,则返回count个随机元素,不会存在重复元素 - 如果
count是负数且绝对值大于集合的元素总数,则返回的结果会出现一个元素出现多次的情况,返回的元素数量也会等于count的绝对值
-
SSCAN- 命令含义:增量迭代一个集合元素
- 命令格式:
SSCAN cursor [MATCH pattern] [COUNT count]
-
SDIFF- 命令含义:求取一个集合与给定集合的差集的元素
- 命令格式:
SDIFF key [key ...]key不存在时,默认是空集
-
SDIFFSTORE- 命令含义:求取两个集合的差集,并将结果保存到目标集合
- 命令格式:
SDIFFSTORE destination key [key ...]- 如
SDIFFSTORE key key1 key2命令中的key为目标集合,用于保存差集,命令执行成功后会返回差集的元素数量 - 如果目标集合
destination已存在,则覆盖重写
- 如
-
SUNION- 命令含义:求取多个集合的并集
- 命令格式:
SUNION key [key ...]- 不存在的
key,被认为是空集合
- 不存在的
SUNIONSTORE- 命令含义:求取多个集合的并集,并将结果保存到目标集合
- 命令格式:
SUNIONSTORE destination key [key ...]destination表示目标集合- 如果目标集合
destination已存在,则覆盖重写 - 命令执行成功后,会返回并集的元素个数
SINTER- 命令含义:求取多个集合的交集
- 命令格式:
SINTER key [key ...]- 如果指定的集合中只要存在一个空集合,则结果必然为空
key不存在时,会被认为是空集合
SINTERSTORE- 命令含义:求取多个集合的交集,并将结果保存到目标集合
- 命令格式:
SINTERSTORE destination key [key ...]destination为目标集合- 如果目标集合已存在,则会覆盖重写
哈希 Hash
命令
HSET- 命令含义:设置指定哈希集合中的键值对
- 命令格式:
HSET key field value- 如果指定的哈希集
key不存在,即会创建一个新的哈希集并与key关联 - 如果字段已经存在,即会覆盖重写它的值
- 如果指定的哈希集
HMSET- 命令含义:一次过为指定的
key哈希集添加多个键值对 - 命令格式:
HMSET key field value [field value ...]- 如果
key哈希集不存在,即创建新的哈希集合
- 如果
- 命令含义:一次过为指定的
HSETNX- 命令含义:如果给定的 key 哈希集中不存在指定的字段,则添加字段并设置值
- 命令格式:
HSETNX key field value- 如果
key哈希集不存在,则创建新的哈希集 - 如果
field字段存在时,字段的值不会被设置
- 如果
HGET- 命令含义:获取指定哈希集合中指定字段的值
- 命令格式:
HGET key field- 字段不存在或
key不存在,则返回nil
- 字段不存在或
HMGET- 命令含义:获取指定哈希集合中多个字段的值
- 命令格式:
HMGET key field [field ...]- 哈希集中不存在的每个字段,返回
nil值
- 返回顺序与字段请求顺序一致
- 哈希集中不存在的每个字段,返回
HEXISTS- 命令含义:判断哈希集中是否存在指定的字段
- 命令格式:
HEXISTS key field- 存在,返回
1 - 不存在,返回
0
- 存在,返回
HGETALL- 命令含义:获取指定哈希集合中的所有字段及其对应的值
- 命令格式:
HGETALL key- key 不存在时,返回空列表
- 返回列表中,每个字段名的下一个是它的值
HKEYS- 命令含义:返回哈希集中所有字段的名字
- 命令格式:
HKEYS keykey不存在时,返回空列表
HVALS- 命令含义:返回哈希集中所有字段的值
- 命令格式:
HVALS keykey不存在时,返回空列表
HLEN- 命令含义:返回哈希集中所包含字段的总数
- 命令格式:
HLEN keykey不存在时,返回0
HSTRLEN- 命令含义:返回哈希集中指定字段的值的字符串长度
- 命令格式:
HSTRLEN key field- 如果
key不存在或者field不存在,则返回0
- 如果
HDEL- 命令含义:删除哈希集中的指定字段
- 命令格式:
HDEL key field [field ...]2.4以上的版本,接受多个field参数,低版本只能接受一个key不存在,则返回0- 返回的结果,表示删除了多少个字段
HSCAN- 命令含义:增量迭代一个集合元素
- 命令格式:
HSCAN cursor [MATCH pattern] [COUNT count]
HINCRBY- 命令含义:为给定的哈希集合中的指定字段的值增加数值。
- 命令格式:
HINCRBY key field incrementincrement表示增加的步长- 如果字段不存在,则先设置为
0,再执行增加操作
HINCRBYFLOAT- 命令含义:为指定
key的哈希集合的field字段值执行float类型的increment增值 - 命令格式:HINCRBYFLOAT key field increment
- 字段的值,必须是数字型
increment要是能被解析成float类型的值
- 命令含义:为指定
有序集合 Zset
增加和查询的命令
ZADD- 命令含义:向有序集合中添加元素。
- 命令格式:
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]- 参数
XX,NX,CH,INCR只能在>= redis 3.0.2的版本使用 - 如果
key类型不是有序集合,则返回错误 - 可以一次过添加多个【分数
score+ 元素member】 - 如果已存在对应成员元素,即修改成员元素的
score值,并更新到正确的排序位置 - 分数值
score是一个双精度的浮点型数字字符串。-inf表示负无穷,+inf表示正无穷。数值范围 到 - XX 选项,表示更新存在的元素,若不存在则不进行任何操作
- NX 选项,表示不更新存在的元素,只是添加新元素
- CH 选项,表示返回发生变化的元素总数,包括新添加的元素和已存在但更新了分数(分数相同不会被更新)的元素
- INCR 选项,表示对指定的元素进行递增操作
- 元素分数相同时,按元素的字典规则进行排序。字典顺序排序使用二进制,比较的是字符串的字节数组。
- 参数
ZRANGE- 命令含义:返回有序集合中的指定范围的元素。
- 命令格式:
ZRANGE key start stop [WITHSCORES]- 返回的元素按分数从低到高排序,分数相同则按字典排序
start和stop是基于零的索引,0表示第一个元素,1表示第二个元素,-1表示倒数第一个元素,-2表示倒数第二元素start和stop是全包含区间。如ZRANGE myzset 0 1会返回集合的第一个和第二个元素start大于stop,返回空列表。stop大于集合长度,默认返回集合的最后一个元素WITHSCORES选项,表示将元素和分数一起返回。格式如:element_1, score_1, element_2, score_2, …, element_N, score_N
ZRANGEBYLEX- 命令含义:返回集合中的指定区间的成员,成员要按字典正序排序,但要求元素的分数必须相同。
- 命令格式:
ZRANGEBYLEX key min max [LIMIT offset count]- 分数
score不一致时,不要使用该命令,因为返回结果不准确 min表示排序位置中最小的元素,可以用[开头,也可以用(开头,可以使用-代替max表示排序位置中最大的元素,可以用[开头,也可以用(开头,可以使用+代替LIMIT表示返回结果是否进行分页,且必须指定offset和countoffset表示返回结果的起始位置count表示结果的数量
- 分数
- 命令格式:
- 命令含义:返回集合中的指定区间的成员,成员要按字典正序排序,但要求元素的分数必须相同。
ZRANGEBYSCORE- 命令含义:返回有序集合中分数处于
min和max之间的所有元素(包括分数与min或max相等的) - 命令格式:
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]WITHSCORES选项,会返回元素和其分数- 默认情况下,min 和 max 都是闭区间,若要指明为开区间,在
min或max前面加上(
- 命令含义:返回有序集合中分数处于
ZRANK- 命令含义:返回集合中指定元素的排名,排名时从小到大递增
- 命令格式:
ZRANK key member- 排名以
0开始,score最小的元素排名为0 member不是集合的元素时,返回nil
- 排名以
ZSCAN- 命令含义:增量迭代一个集合元素
- 命令格式:
ZSCAN key cursor [MATCH pattern] [COUNT count]
ZSCORE- 命令含义:返回集合中的指定元素的
score分数值 - 命令格式:
ZSCORE key member- 返回值是以字符串形式表示的
double型浮点数
- 返回值是以字符串形式表示的
- 命令含义:返回集合中的指定元素的
统计的命令
ZCARD- 命令含义:返回集合中的元素个数
- 命令格式:
ZCARD key
ZCOUNT- 命令含义:返回集合中的指定分数范围的元素个数
- 命令格式:
ZCOUNT key min max
ZLEXCOUNT- 命令含义:统计集合中的
指定成员之间的成员个数 - 命令格式:
ZLEXCOUNT key min max- 如
zlexcount zset [member1 [member5 min和max既可以是分数值,也可以是元素值
- 如
- 命令含义:统计集合中的
删除元素的命令
ZPOPMIN- 命令含义:删除并返回集合中的得分最低的
count个元素- 命令格式:
ZPOPMIN key [count]count的默认值为1。当count大于1时,首先得分最低的元素,其次是得分倒数第二的元素,并以此递推。- 返回值是分数和元素的列表
- 命令格式:
- 命令含义:删除并返回集合中的得分最低的
ZPOPMAX- 命令含义:
- 命令格式:
BZPOPMIN- 命令含义:
- 命令格式:
BZPOPMAX- 命令含义:
- 命令格式:
ZREM- 命令含义:
- 命令格式:
ZREMRANGEBYRANK- 命令含义:
- 命令格式:
ZREMRANGEBYSCORE- 命令含义:
- 命令格式:
元素排序的命令
ZREVRANK- 命令含义:
- 命令格式:
ZREVRANGE- 命令含义:
- 命令格式:
ZREVRANGEBYLEN- 命令含义:
- 命令格式:
ZREVRANGEBYSCORE- 命令含义:
- 命令格式:
集合运算的命令
ZINCRBY- 命令含义:
- 命令格式:
ZINTERSTORE- 命令含义:
- 命令格式:
ZUNIONSTORE- 命令含义:
- 命令格式: