Redis命令汇总(不定时更新)

Redis命令的名称是大小写不敏感的,输入的命令名称只要正确,无论大小写,都能得到正确的结果。

【 字符串(String)命令 】

字符串类型是redis中最基础的数据类型,任何类型的字符串都可以存储。字符串类型最大可以存储512MB的数据。

  • SET:设置键值对
SET  key  value  [EX seconds]  [PX milliseconds]  [NX|XX]

SET命令用于把value设置到key中。如果key已存在,则覆盖旧的value。

“EX seconds”用于指定key的生存时间,例如“SET abc 123 EX 60”,表示设置abc的值为123,并且这个abc只会存在60秒。

SET  key  value  EX  seconds

等价于

SETEX  key  seconds  value

SETEX命令是专门用于设置key的生存时间的命令。

“PX milliseconds”也用于指定key的生存时间,例如“SET abc 123 PX 10000”,表示这个abc只会存在10000毫秒。

SET  key  value  PX  milliseconds

等价于

PSETEX  key  milliseconds  value

PSETEX命令也是专门用于设置key的生存时间的命令。

“NX”表示当key不存在时,才对key进行设置。

“XX”表示当key存在时,才对key进行设置。

SET命令执行成功,会返回OK;如果设置了NX或XX造成条件不满足而执行失败时,返回null。

  • MSET:设置多个键值对
MSET  key  value  [key value...]

MSET命令是原子性操作,不存在部分更新的情况。MSET命令不可能执行失败,执行完毕返回OK。

举例:

MSET name "Jack" age "23" gender "male"
  • SETNX:设置不存在的键值对
SETNX key value

如果key不存在,则进行设置,返回1;如果key已经存在,则什么都不做,返回0。

  • MSETNX:设置多个不存在的键值对
MSETNX  key  value  [key  value...]

SETNX命令的多键值对版本,这个命令是原子性操作。当且仅当所有给定的key都不存在时,才进行设置,并返回1;只要有一个key是存在,这条命令就不做任何操作,并返回0。

  • GET:获取键值对的值
GET  key

GET命令只能用于处理字符串,如果GET命令获取到的value不是字符串类型,会返回一个错误。

当key存在时,返回key所对应的value;如果key不存在时,返回null。

  • MGET:获取多个键值对的值
MGET  key  [key...]

返回包含所有给定key的值的列表,如果某一个key不存在,则这个key的对应位置上会返回一个null。

  • SETRANGE:替换键对应值的子字符串
SETRANGE  key  offset  value

对key做对应的字符串值进行内容替换,从offset指定的下标开始,替换为value。返回执行SETRANGE命令后,key对应的字符串的长度。

  • GETRANGE:获取键对应值的子字符串
GETRANGE  key  start  end

该命令用于获取key对应的字符串值从start开始到end截止的子字符串。start和end都是从0开始,并且都是整数,也可以为负整数。当取负数时,表示从字符串最后开始计数,-1表示字符串的最后一个字符,-2表示字符串的倒数第二个字符。。。

  • SETBIT:设置偏移量上的位(bit)的值
SETBIT  key  offset  value

该命令对key的所对应的字符串设置指定偏移量上的位(bit)。value只可以取0或1。key不存在时,会自动生成一个新的字符串,这个字符串是可动态扩展的,扩展时使用0来填充空白位置。offset必须是非负整数,且必须小于2^32。

  • GETBIT:获取偏移量上的位(bit)的值
GETBIT  key  offset

和SETBIT命令对应的一条命令,一个用于设置,一个用于获取,不做解释。

  • GETSET:为键设置新值
GETSET  key  value

GETSET命令将key对应的字符串设置为value,同时返回旧的字符串值(如果key不存在,返回null)。如果key存在但其对应的值不是字符串时,会报错。

  • APPEND:为键追加值
APPEND  key  value

将value追加到key对应的字符串的末尾。返回命令执行后key对应的字符串的长度。

  • BITCOUNT:统计键中为1的位(bit)的个数
BITCOUNT  key  [start]  [end]

start和end用于限定统计范围,如果start和end参数不出现在命令中,则认为是统计整个字符串。

  • BITOP:对键进行位元运算
BITOP  operation  destkey  key  [key...]

BITOP命令对n个key对应的字符串进行位元运算,然后把运算结果保存到destkey下。

operation的取值有4种:AND、OR、NOT、XOR。

返回保存到destkey下的字符串的长度。

  • STRLEN:统计字符串长度
STRLEN  key

统计key对应的字符串的长度。如果key不存在,返回0;如果key对应的不是字符串,报错。

  • DECR:键值减一(自减)
DECR  key

如果key不存在,则会在数据库中新增key,并初始化为0,然后减一。这个命令只对数字类型的起作用,如果key对应的值不是数字,也不是能转为数字的类型,会报错。同时,DECR命令要求key对应的数字最宽64位。返回减去一后的新值。

  • DECRBY:键值减N
DECRBY  key  n

和DECR一样,只不过DECR是减一,而DECRBY是减n。

  • INCR:键值加一(自加)
INCR  key

和DECR一样,只不过DECR是减一,而INCR是加一。

  • INCRBY:键值加n
INCRBY  key  n

和DECR一样,只不过DECR是减一,而INCRBY是加n。

  • INCRBYFLOAT:键值加n,n为浮点数
INCRBYFLOAT  key  n

和INCRBY一样,只不过这里的n是浮点数,而INCRBY中的n如果是浮点数,会报错。

【 哈希(Hash)命令 】

Hash类型是String类型的域(field)和值(value)的映射表,基于这个定义,Hash类型常常用于存储对象信息。哈希表可以存储2^32-1个键值对(40亿以上)。

  • HSET:为哈希表的域设置值
HSET  key  field  value

将哈希表key中的field的值设置为value。如果key不存在,会自动在数据库中新增一个叫key的哈希表。

在哈希表中,如果field不存在,会在哈希表中创建一个field,然后把value设置上去,并返回1;如果field已存在,会用value替换旧值,然后返回0。

  • HSETNX:为哈希表中不存在的域设置值
HSETNX  key  field  value

和HSET一样,唯一的区别是,如果field存在,则该命令无效,返回0;如果field不存在,则新减field并把其对应的值设置为value,并返回1。

  • HMSET:向哈希表中设置多个域和值
HMSET  key  field  value  [field  value...]

当HMSET命令执行成功后,会返回OK;如果key不是哈希表,直接报错。

  • HGET:获取哈希表中某个域的值
HGET  key  field

如果哈希表key存在,且域field存在,则返回对应的值;否则返回null。

  • HGETALL:获取哈希表中所有的域和值
HGETALL  key

如果哈希表key存在,将会以列表的形式返回其所有的field和value,该列表的长度是哈希表中field的个数的两倍;如果哈希表key不存在,则返回空列表。

  • HMGET:获取多个域的值
HMGET  key  field  [field...]

该命令会返回一个value的列表,列表的长度是命令中出现的field的个数。如果key不存在,则列表的每一个元素都是null;如果列表存在,但某些field不存在,则在该field对应的位置上返回null。

  • HKEYS:获取哈希表中所有的域
HKEYS  key

以列表的形式返回哈希表key中的所有field。如果哈希表key不存在,则列表长度为0(空列表)。

  • KVALS:获取哈希表中所有的值
HVALS  key

和HKEYS命令一样,不过HVALS获取的是值(value),而KEYS获取的是域(field)。

  • HLEN:获取哈希表中域的个数
HLEN  key

返回哈希表key中field的个数,如果key不存在,返回0。

  • HSTRLEN:获取指定哈希表中某域所对应值的字符串长度
HSTRLEN  key  field

当哈希表key不存在,或field不存在时,返回0;否则,返回字符串长度。

  • HINCRBY:为哈希表的域加上增量值
HINCRBY  key  filed  n

为哈希表key的field域对应的值加上n。n可以为负数,但必须是整数。如果key不存在,或field不存在,会在数据库中自动新增,然后再执行该命令。该命令只能作用于数字类型或可转换为数字类型的值上,否则会报错。命令执行成功后会返回新值。

  • HINCRBYFLOAT:为哈希表的域加上增量值(可以是浮点数)
HINCRBYFLOAT  key  field  n

和HINCRBY一样,但是n可以使浮点数,而INCRBY只能作用于整数。

  • HDEL:删除哈希表中的某些域
HDEL  key  field  [field...]

删除哈希表key中的指定域,如果某个指定的域不存在,会自动忽略这个域。命令执行完毕,会返回被真正删除的域的个数(不包含被忽略的域)。

  • HEXISTS:判断哈希表中是否存在某个域
HEXISTS  key  field

如果哈希表key存在,且域field存在,返回1;否则,返回0。

【 列表(List)命令 】

列表(List)数据类型是字符串列表,元素按照插入顺序存储,Redis的列表可以存储2^32-1个元素。

  • LPUSH:将n个元素插入到列表头部
LPUSH  key  value  [value...]

注意,这条命令是把n个value依次插入到列表的头部!所以:

执行完下面这条命令:

LPUSH  alist  "x"  "y"  "z"

列表alist的内容是:"z"、"y"、"x";而不是:"x"、"y"、"z"!

命令执行完毕,返回列表的长度。

  • RPUSH:将n个元素插入到列表尾部
RPUSH  key  value  [value...]

注意,这条命令是把n个value依次插入到列表的尾部!所以:

执行完下面这条命令:

RPUSH  alist  "x"  "y"  "z"

列表alist的内容是:"x"、"y"、"z"!

命令执行完毕,返回列表的长度。

  • LINSERT:插入一个元素到列表中
LINSERT  key  BEFORE  |  AFTER  pivot  value

该命令向列表key中插入一个元素value,这个元素的位置在pivot元素之前(BEFORE)或之后(AFTER)。当列表key中不存在元素pivot时,该命令无效;当key不存在时,key被认为是空列表,命令也无效。如果key不是列表类型,会报错。

命令如果成功执行,返回列表的新长度;如果pivot不存在,返回-1;如果key不存在或key是空列表,返回0。

举例:

执行完下面这条命令:

RPUSH  somelist  "a"  "b"  "c"

列表somelist中的元素依次为:"a"、"b"、"c"。

那么执行下面这条命令之后:

LINSERT  somelist  BEFORE  "b"  "x"

列表somelist中的元素依次为:"a"、"x"、"b"、"c"。

接着再执行下面这条命令:

LINSERT  somelist  AFTER  "b"  "y"

列表somelist中的元素依次为:"a"、"x"、"b"、"y"、"c"。
  • LPUSHX:将值插入列表头部
LPUSHX  key  value

LPUSHX和LPUSH命令很像,都是把元素插入列表的头部,不同之处在于当key不存在时,LPUSH会自动新建一个名字叫key的列表,并把value插入到这个新列表的头部,而LPUSHX要求数据库中必须存在一个名叫key的列表,如果不存在,LPUSHX什么也不做。

LPUSHX命令执行成功后,返回列表的长度;如果key不存在,返回0。

  • RPUSHX:将值插入列表尾部
RPUSHX  key  value

RPUSHX命令和LPUSHX命令的唯一区别是RPUSH是把元素插入到列表的尾部,而LPUSHX是把元素插入到列表的头部。

  • LSET:修改列表的某个元素
LSET  key  index  value

把列表key中下标为index的元素的值设置为value。

如果LSET执行成功,返回OK;否则报错(比如下标越界)。

  • LLEN:获取列表的长度
LLEN  key

执行该命令,会返回列表key中的元素个数;如果key不存在,返回0;如果key不是列表,报错。

  • LINDEX:获取列表中指定下标的元素的值
LINDEX  key  index

index取0,表示获取列表key的第一个元素;取1,表示获取列表key的第二个元素;以此类推。index也可以取负数,-1表示列表的最后一个元素;-2表示列表的倒数第二个元素;以此类推。

如果key不是列表,报错;如果index越界,返回null;否则,返回对应元素的值。

  • LRANGE:获取列表指定区间内的所有元素
LRANGE  key  start  end

start和end均从0开始,0代表列表的第一个元素,1代表列表的第二个元素,以此类推。

start和end也可以取负数,-1代表列表的最后一个元素,-2代表列表的倒数第二个元素,依次类推。

注意,start和end越界并不会引发错误。

该命令执行完毕,返回指定区间内的所有元素,以一个子列表的形式返回。

  • LPOP:获取并删除列表的第一个元素
LPOP  key

执行该命令后,会返回列表key的第一个元素,同时把这个元素从列表中删除;如果列表key不存在,返回null。

  • RPOP:获取并删除列表的最后一个元素
RPOP  key

该命令和LPOP命令唯一的区别是,RPOP是操作列表的最后一个元素,而LPOP操作的是列表的第一个元素。

  • BLPOP:阻塞式LPOP
BLPOP  key  [key...]  timeout

BLPOP命令是LPOP命令的阻塞版本。该命令依次检查各个列表,弹出第一个非空列表的头元素。如果所有列表都为空,命令会被阻塞,直到有列表非空或阻塞时间吃的好过timeout(按秒计算)为止。timeout取0时,允许无限阻塞。

如果成功返回,返回值是一个包含两个元素的列表,第一个元素是列表key的名字,第二个元素是该列表key的第一个元素。如果是超时返回的,返回值是一个空列表。

  • BRPOP:阻塞式RPOP
BRPOP  key  [key...]  timeout

BRPOP命令和BLPOP命令是类似的,只不过BRPOP操作的是列表的最后一个元素,而BLPOP操作的是列表的第一个元素。

  • LREM:删除n个指定的元素
LREM  key  n  value

该命令从列表key中删除n个值为value的元素。

n取0时,LREM命令会从列表key中删除所有值为value的元素。

n取正数时,LREM从列表key的头部开始,删除n个值为value的元素。

n取负数是,LREM从列表key的尾部开始,删除n个值为value的元素。

key存在时,返回真正删除的元素的数量;key不存在时,返回0。

  • LTRIM:在指定区间内修剪列表
LTRIM  key  start  stop

举例:

执行下面这条命令:

LTRIM  somelist  0  9

仅会保留列表somelist中下标从0到9共10个元素,其余的元素都会被删除。

start和stop都是从0开始,0代表列表的第一个元素,1代表第二个,以此类推。

start和stop也可以取负数,-1代表列表的最后一个元素,-2代表倒数第二个,依次类推。

如果key不是列表类型,会报错。start和stop越界不会报错,如果start > key.maxIndex或start > stop,LTRIM命令会清空整个列表。如果stop > key.maxIndex,stop会被置为key.maxIndex。

返回OK代表LTRIM命令执行成功。

  • RPOPLPUSH:在两个列表间移动元素
RPOPLPUSH  source  destination

从列表source中弹出最后一个元素,返回给客户端,这是一个原子操作。然后这个元素会被插入到列表destination的头部。如果列表source不存在,那么返回给客户端的元素为null,后续操作不会执行,相当于整条命令不执行。

如果source和destination是同一个列表,则命令的执行等价于把列表的最后一个元素移动到列表的头部。

命令执行完毕,返回被弹出的元素。

  • BRPOPLPUSH:阻塞式RPOPLPUSH
BRPOPLPUSH  source  destination  timeout

如果列表source不存在(为空),命令会阻塞,直到列表source中存在元素或超时。当列表source不为空时,命令的执行效果和RPOPLPUSH一样。

timeout的单位为秒,取值为0时,可以无线时长地阻塞。

如果超时,返回null和等待时长;如果返回一个列表,则列表的第一个元素是从列表source中弹出的元素,第二个元素是等待时长。(这句话是从书上看到的,实际操作中发现返回值的形式并不是这样的)。

【 集合(Set)命令 】

  • SADD:添加n个元素到集合中
SADD  key  member  [member...]

如果集合key不存在,会自动创建一个集合。如果被添加到集合中的元素member在集合中已经存在,这个元素member会被忽略;不存在时会被添加到集合中去。如果key不是集合类型,会报错。

命令执行完毕,返回实际被添加到集合中的元素的个数,不包含被忽略的元素。

  • SMOVE:从源集合中移动一个元素到目标集合中
SMOVE  source  destination  member

SMOVE命令是原子操作,它的效果是从集合source中把值为member的元素移动到集合destination中去。

source或destination不是集合类型时,报错。

命令成功执行后,返回1;如果source不存在或source中没有member元素,或destination中已经存在member元素时,返回0。

  • SUNIONSTORE:把n个集合中的元素保存到目标集合
SUNIONSTORE  destination  source  [source...]

目标集合destination中的元素是n个源集合source中的元素的并集。

命令执行完毕后,返回目标集合destination中元素的个数。

  • SISMEMBER:判断某元素是否存在于指定集合中
SISMEMBER  key  member

元素member如果存在于集合key中,返回1;否则,返回0。集合key不存在也返回0。

  • SCARD:获取集合中元素的个数
SCARD  key

返回集合key中元素的个数;如果key不存在,返回0。

  • SMEMBERS:获取集合中所有的元素
SMEMBERS  key

返回一个包含集合key所有元素的列表;如果key不存在,返回空列表。

  • SRANDMEMBER:随机获取集合中的元素
SRANDMEMBER  key  [count]

如果没有count参数,则执行命令,会随机返回集合key中的一个元素。

count是正数时,如果count小于集合key中元素的个数,返回包含count个元素的数组(各个元素互不相同);如果count大于等于集合key中元素的个数时,返回整个集合。

count时负数时,返回元素可能重复多次的数组,数组的长度是count的绝对值。

如果没有count参数且key不存在,返回null;

如果没有count参数且key存在,返回一个元素;

如果有count参数且集合key不为空,返回一个数组;

如果有count参数且key为空,返回一个空数组。

  • SUNION:获取多个集合中的所有元素
SUNION  key  [key...]

获取n个集合中所有元素,然后作为一个列表返回。这条命令不会存储返回的结果到任何地方。

如果这n个集合中的任何一个不存在,它会被视为空集合。

  • SDIFF:获取多个集合的差集
SDIFF  key  [key...]

如果某个集合key不存在,则视其为空集合。命令执行后会得到一个差集集合,返回值是包含这个集合内所有元素的列表。

  • SDIFFSTORE:计算多个集合的差集并保存到目标集合中
SDIFFSTORE  destination  key  [key...]

于SDIFF命令不同,SDIFFSTORE命令计算出差集之后,会把这个差集覆盖到目标集合destination上去,注意,是覆盖,也就是说,如果destination已存在并且包含元素,destination会被覆盖掉,原来的元素都没了。

命令结束,会返回destination中元素的个数。

  • SINTER:获取n个集合的交集
SINTER  key  [key...]

计算n个结合的交集,返回包含这个交集中所有元素的列表。如果某个集合key不存在,会被视为空集合。

  • SINTERSTORE:计算n个集合的交集并保存到目标集合
SINTERSTORE  destination  key [key...]

于SINTER命令不同的是,SINTERSTORE命令会把计算出来的交集覆盖到目标集合destination上去,注意,是覆盖。命令执行完毕,会返回目标集合destination中元素的个数。

  • SPOP:删除集合中的n个元素
SPOP  key  [n]

随机从集合key中删除n个元素。命令执行成功,返回被删除的元素的个数;如果key不存在,返回null。

  • SREM:删除集合中的指定元素
SREM  key  member  [member...]

从集合key中删除元素member,该命令会自动忽略集合key中不存在的元素。如果key不是集合类型,会报错。命令执行完毕,返回被实际删除的元素的个数。

【 有序集合(Sorted Set)命令 】

有序集合也是String类型的集合。有序集合中不存在重复的元素,这些元素都有一个double类型的分数(不同元素的分数可以相同),Redis就是根据这个分数对集合中的元素从小到大排序的。

有序集合试用哈希表实现,一般操作的时间复杂度是O(1),最多可以容纳2^32-1个元素。

  • ZADD:向有序集合中添加n个元素
ZADD  key  score  member  [score  member...]

向有序集合中添加n个元素,每个元素member都对应着一个分数score。

  • ZINCRBY:为某元素的分数加上指定的值
ZINCRBY  key  increment  member

把有序集合key的元素member的分数增加increment。

命令执行完毕,返回member的新分数。

  • ZCARD:获取有序集合中元素的个数
ZCARD  key

当key不存在时,返回0。

  • ZCOUNT:统计指定分数区间内元素的个数
ZOUNT  key  min  max

min <= score <= max

  • ZEXCOUNT:统计指定区间内的元素个数
ZEXCOUNT  key  min  max

以后介绍。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值