常用的redis系统命令:
-
auth
如果conf文件里设置了requirepass
的值,那么在连接redis服务器的时候,是需要输入密码的 AUTH password
-
select : 切换数据库
-
keys : keys * 获取当前数据库的所有key; keys h?llo 匹配hello hallo hbllo等; keys h*llo 匹配hllo heeeeeello等; keys h[ae]llo 匹配hallo hello,但不匹配hillo等.
-
exist : 判断key是否存在,存在返回1,否则返回0
-
type key : 返回key所储存的值的类型
更多的类型:
-
rename key newkey : 将key改名为newkey,当key和newkey相同,或者key不存在时,返回一个错误;当newkey已经存在时,rename命令将覆盖这个旧值.
-
renamenx key newkey : 当且仅当newkey不存在时,将key改名为newkey,当key不存在时,返回一个错误.
-
dbsize : 返回当前数据库的 key 的数量。
-
flushdb 清空当前数据库,此命令从不失败。
-
flushall 清空整个 Redis 服务器的数据(删除所有数据库的所有 key )。此命令从不失败。
-
swapdb db1 db2 : 对换指定的两个数据库, 使得两个数据库的数据立即互换。
-
expire key seconds :为给定
key
设置生存时间,当key
过期时(生存时间为0
),它会被自动删除。在 Redis 中,带有生存时间的key
被称为『易失的』(volatile)。生存时间可以通过使用DEL
命令来删除整个key
来移除,或者被SET
和GETSET
命令覆写(overwrite),这意味着,如果一个命令只是修改(alter)一个带生存时间的key
的值而不是用一个新的key
值来代替(replace)它的话,那么生存时间不会被改变。 -
pexpire key milliseconds : 这个命令和
EXPIRE
命令的作用类似,但是它以毫秒为单位设置key
的生存时间,而不像EXPIRE
命令那样,以秒为单位。 -
expire at key timestamp : 和
EXPIRE
类似,都用于为key
设置生存时间。不同在于EXPIREAT
命令接受的时间参数是 UNIX 时间戳(unix timestamp)。 -
pexpire at key milliseconds-timestamp : 这个命令和
expireat
命令类似,但它以毫秒为单位设置key
的过期 unix 时间戳,而不是像expireat
那样,以秒为单位。 -
ttl key : 以秒为单位,返回给定
key
的剩余生存时间(TTL, time to live)。当key
不存在时,返回-2
。 当key
存在但没有设置剩余生存时间时,返回-1
。 否则,以秒为单位,返回key
的剩余生存时间。 -
pttl key : 这个命令类似于
TTL
命令,但它以毫秒为单位返回key
的剩余生存时间,而不是像TTL
命令那样,以秒为单位。 -
persist key : 移除给定
key
的生存时间,将这个key
从“易失的”(带生存时间key
)转换成“持久的”(一个不带生存时间、永不过期的key
)。 -
save : save命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。一般来说,在生产环境很少执行 SAVE 操作,因为它会阻塞所有客户端,保存数据库的任务通常由 BGSAVE 命令异步地执行。然而,如果负责保存数据的后台子进程不幸出现问题时, SAVE 可以作为保存数据的最后手段来使用。
-
bgsave :
BGSAVE 命令执行之后立即返回
OK
,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。客户端可以通过 LASTSAVE 命令查看相关信息,判断 BGSAVE 命令是否执行成功 -
bgrewriteaof : 从 Redis 2.4 开始, AOF 重写由 Redis 自行触发, BGREWRITEAOF 仅仅用于手动触发重写操作。
-
lastsave : 返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示。
redis常用操作数据命令
string:
-
set key value :
将字符串值
value
关联到key
。如果key
已经持有其他值,SET
就覆写旧值, 无视类型。当SET
命令对一个带有生存时间(TTL)的键进行设置之后, 该键原有的 TTL 将被清除。 -
setnx key value : 只在键
key
不存在的情况下, 将键key
的值设置为value
。若键key
已经存在, 则SETNX
命令不做任何动作。SETNX
是『SET if Not eXists』(如果不存在,则 SET)的简写。 -
set key seconds value : 将键
key
的值设置为value
, 并将键key
的生存时间设置为seconds
秒钟。如果键key
已经存在, 那么SETEX
命令将覆盖已有的值。 -
psetnx key milliseconds value : 这个命令和
SETEX
命令相似, 但它以毫秒为单位设置key
的生存时间, 而不是像SETEX
命令那样以秒为单位进行设置。 -
get key : 如果键
key
不存在, 那么返回特殊值nil
; 否则, 返回键key
的值。如果键key
的值并非字符串类型, 那么返回一个错误, 因为GET
命令只能用于字符串值。 -
getset key value : 将键
key
的值设为value
, 并返回键key
在被设置之前的旧值。 -
strlen key : 返回字符串值的长度。当键
key
不存在时, 命令返回0
。当key
储存的不是字符串值时, 返回一个错误。 -
append key value : 如果键
key
已经存在并且它的值是一个字符串,APPEND
命令将把value
追加到键key
现有值的末尾。如果
key
不存在,APPEND
就简单地将键key
的值设为value
, 就像执行SET key value
一样。 -
setrange key offset value : 从offset开始,用value覆写key储存的字符串值。
-
getrange key start end : 返回键
key
储存的字符串值的指定部分, 字符串的截取范围由start
和end
两个偏移量决定 (包括start
和end
在内)。负数偏移量表示从字符串的末尾开始计数,-1
表示最后一个字符,-2
表示倒数第二个字符, 以此类推。 -
incr key : 为键
key
储存的数字值加上一。如果键key
不存在, 那么它的值会先被初始化为0
, 然后再执行INCR
命令。如果键key
储存的值不能被解释为数字, 那么INCR
命令将返回一个错误。本操作的值限制在 64 位(bit)有符号数字表示之内。 -
incrby key increment :
为键
key
储存的数字值加上增量increment
。如果键
key
不存在, 那么键key
的值会先被初始化为0
, 然后再执行INCRBY
命令。如果键
key
储存的值不能被解释为数字, 那么INCRBY
命令将返回一个错误。本操作的值限制在 64 位(bit)有符号数字表示之内。
-
incrbyfloat key increment : 为键
key
储存的值加上浮点数增量increment
。 -
decr key : 为键
key
储存的数字值减去一。 -
decrby key decrement : 将键
key
储存的整数值减去减量decrement
。 -
mset key value [key value …] : 同时为多个键设置值。
如果某个给定键已经存在, 那么
MSET
将使用新值去覆盖旧值, 如果这不是你所希望的效果, 请考虑使用MSETNX
命令, 这个命令只会在所有给定键都不存在的情况下进行设置。MSET
是一个原子性(atomic)操作, 所有给定键都会在同一时间内被设置, 不会出现某些键被设置了但是另一些键没有被设置的情况。
-
mset key value [key value …] : 当且仅当所有给定键都不存在时, 为所有给定键设置值。即使只有一个给定键已经存在,
MSETNX
命令也会拒绝执行对所有键的设置操作。MSETNX
是一个原子性(atomic)操作, 所有给定键要么就全部都被设置, 要么就全部都不设置, 不可能出现第三种状态. -
mget key [key …] : 返回给定的一个或多个字符串键的值。
如果给定的字符串键里面, 有某个键不存在, 那么这个键的值将以特殊值
nil
表示。MGET
命令将返回一个列表, 列表中包含了所有给定键的值.
hsah:
-
hset hash filed value : 将哈希表
hash
中域field
的值设置为value
。如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行
HSET
操作。如果域field
已经存在于哈希表中, 那么它的旧值将被新值value
覆盖。 -
hsetnx hash field value : 当且仅当域
field
尚未存在于哈希表的情况下, 将它的值设置为value
。如果给定域已经存在于哈希表当中, 那么命令将放弃执行设置操作。如果哈希表hash
不存在, 那么一个新的哈希表将被创建并执行HSETNX
命令。 -
hget hash field : 命令在默认情况下返回给定域的值。如果给定域不存在于哈希表中, 又或者给定的哈希表并不存在, 那么命令返回
nil
。 -
hexixt hash filed : 定域存在时返回
1
, 在给定域不存在时返回0
。 -
hdel key field [field …] : 删除哈希表
key
中的一个或多个指定域,不存在的域将被忽略。 -
hlen key : 返回hash表key中域的数量
-
hstrlen key filed : 返回哈希表
key
中, 与给定域field
相关联的值的字符串长度(string length)。如果给定的键或者域不存在, 那么命令返回0
。 -
HINCRBY key field increment : 为哈希表
key
中的域field
的值加上增量increment
。增量也可以为负数,相当于对给定域进行减法操作。如果key
不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果域field
不存在,那么在执行命令前,域的值被初始化为0
。对一个储存字符串值的域field
执行 HINCRBY 命令将造成一个错误。本操作的值被限制在 64 位(bit)有符号数字表示之内。 -
HINCRBYFLOAT key field increment : 为哈希表
key
中的域field
加上浮点数增量increment
。 -
HMSET key field value [field value …] : 同时将多个
field-value
(域-值)对设置到哈希表key
中。 -
HMGET key field [field …] : 返回哈希表
key
中,一个或多个给定域的值。如果给定的域不存在于哈希表,那么返回一个nil
值。因为不存在的key
被当作一个空哈希表来处理,所以对一个不存在的key
进行 HMGET 操作将返回一个只带有nil
值的表。 -
HKEYS key : 返回哈希表
key
中的所有域。 -
HVALS key :返回哈希表
key
中所有域的值。 -
HGETALL key : 返回哈希表
key
中,所有的域和值。在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。
list:
-
lpush key value [value …] : 将一个或多个值
value
插入到列表key
的表头 -
lpushnx key value : 将值
value
插入到列表key
的表头,当且仅当key
存在并且是一个列表。 -
rpush key value [value …] : 将一个或多个值
value
插入到列表key
的表尾 -
rpushnx key value : 将值
value
插入到列表key
的表尾,当且仅当key
存在并且是一个列表。 -
lpop : 移除并返回列表
key
的头元素。 -
blpop key [key …] timeout: 是列表的阻塞式(blocking)弹出原语。它是 LPOP key 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP命令阻塞,直到等待超时或发现可弹出元素为止。
当给定多个
key
参数时,按参数key
的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。 -
rpop : 移除并返回列表
key
的尾元素。 -
brpop key [key …] timeout : 是列表的阻塞式(blocking)弹出原语。它是 RPOP key 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BRPOP命令阻塞,直到等待超时或发现可弹出元素为止。
当给定多个
key
参数时,按参数key
的先后顺序依次检查各个列表,弹出第一个非空列表的尾部元素。关于阻塞操作的更多信息,请查看 BLPOP key [key …] timeout 命令, BRPOP 除了弹出元素的位置和 BLPOP key [key …] timeout 不同之外,其他表现一致。
-
rpoplpush source desctination :
在一个原子时间内,执行以下两个动作:将列表
source
中的最后一个元素(尾元素)弹出,并返回给客户端。将source
弹出的元素插入到列表destination
,作为destination
列表的的头元素。 -
brpoplpush source desctination : 是 RPOPLPUSH source destination 的阻塞版本,当给定列表
source
不为空时, BRPOPLPUSH 的表现和 RPOPLPUSH source destination 一样。当列表
source
为空时, BRPOPLPUSH 命令将阻塞连接,直到等待超时,或有另一个客户端对source
执行 LPUSH key value [value …] 或 RPUSH key value [value …] 命令为止。超时参数
timeout
接受一个以秒为单位的数字作为值。超时参数设为0
表示阻塞时间可以无限期延长(block indefinitely) 。 -
lrem key count value : 根据参数
count
的值,移除列表中与参数value
相等的元素。count
的值可以是以下几种:
count > 0
: 从表头开始向表尾搜索,移除与 value
相等的元素,数量为 count
。
count < 0
: 从表尾开始向表头搜索,移除与 value
相等的元素,数量为 count
的绝对值。
count = 0
: 移除表中所有与 value
相等的值。
-
llen key : 返回列表
key
的长度。 -
lindex key index : 返回列表
key
中,下标为index
的元素。 -
linsert key BEFORE|AFTER pivot value : 将值
value
插入到列表key
当中,位于值pivot
之前或之后。当pivot
不存在于列表key
时,不执行任何操作。当key
不存在时,key
被视为空列表,不执行任何操作。如果key
不是列表类型,返回一个错误。 -
lset key index value : 将列表
key
下标为index
的元素的值设置为value
。 -
lrange key start stop : 返回列表
key
中指定区间内的元素,区间以偏移量start
和stop
指定。下标(index)参数start和stop 都以0
为底,也就是说,以0
表示列表的第一个元素,以1
表示列表的第二个元素,以此类推。你也可以使用负数下标,以-1
表示列表的最后一个元素,-2
表示列表的倒数第二个元素,以此类推。
set:
-
sadd key member [member …] : 将一个或多个
member
元素加入到集合key
当中,已经存在于集合的member
元素将被忽略。假如key
不存在,则创建一个只包含member
元素作成员的集合。当key
不是集合类型时,返回一个错误。 -
sismember key member : 判断
member
元素是否集合key
的成员。 -
spop key : 移除并返回集合中的一个随机元素。
-
SRANDMEMBER key [count] : 如果命令执行时,只提供了
key
参数,那么返回集合中的一个随机元素。从 Redis 2.6 版本开始, SRANDMEMBER 命令接受可选的count
参数:如果count
为正数,且小于集合基数,那么命令返回一个包含count
个元素的数组,数组中的元素各不相同。如果count
大于等于集合基数,那么返回整个集合。如果count
为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为count
的绝对值。 -
srem key member [member …] : 移除集合
key
中的一个或多个member
元素,不存在的member
元素会被忽略。 -
smove source destination member : 将
member
元素从source
集合移动到destination
集合。(原子性操作) -
scard key : 返回集合
key
的基数(集合中元素的数量)。 -
smembers key : 返回集合
key
中的所有成员。 -
sinter key [key …] : 返回一个集合的全部成员,该集合是所有给定集合的交集。
-
sinterstore destination key [key …] : 这个命令类似于 SINTER key [key …] 命令,但它将结果保存到
destination
集合,而不是简单地返回结果集。 -
sunion key [key …] : 返回一个集合的全部成员,该集合是所有给定集合的并集。
-
sunionstore destination key [key …] : 这个命令类似于 SUNION key [key …] 命令,但它将结果保存到
destination
集合,而不是简单地返回结果集。 -
sdiff key [key …] : 返回一个集合的全部成员,该集合是所有给定集合之间的差集。
-
sdiffstore destination key [key …] : 这个命令的作用和 SDIFF key [key …] 类似,但它将结果保存到
destination
集合,而不是简单地返回结果集。
zset:
-
zadd key score member [[score member] [score member] …] : 将一个或多个
member
元素及其score
值加入到有序集key
当中。如果某个member
已经是有序集的成员,那么更新这个member
的score
值,并通过重新插入这个member
元素,来保证该member
在正确的位置上。score
值可以是整数值或双精度浮点数。如果key
不存在,则创建一个空的有序集并执行 ZADD 操作。当key
存在但不是有序集类型时,返回一个错误。 - zscore key member : 返回有序集
key
中,成员member
的score
值。如果member
元素不是有序集key
的成员,或key
不存在,返回nil
。 - ZINCRBY key increment member : 为有序集
key
的成员member
的score
值加上增量increment
。 - zcard key : 当
key
存在且是有序集类型时,返回有序集的基数。 当key
不存在时,返回0
。 - zcount key min max : 返回有序集
key
中,score
值在min
和max
之间(默认包括score
值等于min
或max
)的成员的数量。 - zrem key member [member …] : 移除有序集
key
中的一个或多个成员,不存在的成员将被忽略。