前情提要:
《redis 从0到1完整学习 (一):安装&初识 redis》
本文主要介绍一下通用命令,更多 Redis 命令请查询 Redis 官网,Redis Commands
介绍一些常用通用的命令。
SET
用法:
SET key value [NX | XX] [GET] [EX seconds | PX milliseconds |
EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]
设置一个键值对。其中 Options 解释:
EX seconds -- 设置过期时间,单位为秒
PX milliseconds -- 设置过期时间,单位为毫秒
EXAT timestamp-seconds -- 设置过期的具体 Unix 时间,单位为秒
PXAT timestamp-milliseconds -- 设置过期的具体 Unix 时间,单位为毫秒
NX -- 仅当 key 不存在才设置
XX -- 仅当 key 存在才设置
KEEPTTL -- 设置新值时保留 key 的现有过期时间。这意味着,如果 key 已经设置了过期时间,使用 SET 命令更新键的值时,原有的过期时间会被保留。
GET -- 返回存储在 key 处的旧字符串,如果key不存在,则返回 nil。如果存储在 key 上的值不是字符串,则返回错误并中止 SET。
例子:
redis> SET mykey "Hello"
"OK"
redis> GET mykey
"Hello"
redis> SET anotherkey "will expire in a minute" EX 60
"OK"
redis>
GET
用法:
GET key
返回 key 对应的值。
例子:
redis> GET nonexisting
(nil)
redis> SET mykey "Hello"
"OK"
redis> GET mykey
"Hello"
redis>
MSET
用法:
MSET key value [key value ...]
用于批量设置多个键值对。
例子:
redis> MSET key1 "Hello" key2 "World"
"OK"
redis> GET key1
"Hello"
redis> GET key2
"World"
redis>
KEYS
用法:
KEYS pattern
根据 pattern 的匹配规则返回数据库中的所有 key。其中 pattern
示例如下:
h?llo matches hello, hallo and hxllo
h*llo matches hllo and heeeello
h[ae]llo matches hello and hallo, but not hillo
h[^e]llo matches hallo, hbllo, ... but not hello
h[a-b]llo matches hallo and hbllo
例子:
redis> MSET firstname Jack lastname Stuntman age 35
"OK"
# 查询包含 name 的 key
redis> KEYS *name*
1) "lastname"
2) "firstname"
# 查询以 a 字母开头,长度为3的 key
redis> KEYS a??
1) "age"
# 查询所有 key
redis> KEYS *
1) "lastname"
2) "age"
3) "firstname"
redis>
DEL
用法:
DEL key [key ...]
用于删除 Redis 中现有 key,可以删除多个 key。返回值实际被删除 key 的数目。
例子:
redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
# 连续删除多个 key。key3 不存在,实际删除2个 key
redis> DEL key1 key2 key3
(integer) 2
redis>
EXISTS
用法:
EXISTS key [key ...]
用于判断 key 是否存在。指定的 key 存在时,返回值为1;当指定的 key 不存在时,返回值为0。如果指定了多个 key,返回值会累加,表示存在的 key 的个数。
例子:
redis> SET key1 "Hello"
"OK"
redis> EXISTS key1
(integer) 1
redis> EXISTS nosuchkey
(integer) 0
redis> SET key2 "World"
"OK"
redis> EXISTS key1 key2 nosuchkey
(integer) 2
redis>
EXPIRE
用法:
EXPIRE key seconds [NX | XX | GT | LT]
设置一个 key 的过期时间,单位为秒,超过有效期 key 则会移除。其中 Options 解释:
NX -- 仅当 key 没有过期时间,才设置
XX -- 仅当 key 有过期时间,才设置
GT -- 仅当 key 的新的过期时间大于当前过期时间,才设置
LT -- 仅当 key 的新的过期时间小于当前过期时间,才设置
例子:
redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> SET mykey "Hello World"
"OK"
redis> TTL mykey
(integer) -1
redis> EXPIRE mykey 10 XX
(integer) 0
redis> TTL mykey
(integer) -1
redis> EXPIRE mykey 10 NX
(integer) 1
redis> TTL mykey
(integer) 10
redis>
TTL
用法:
TTL key
返回 key 的剩余时间。如果 key 存在但未设置过期时间,则返回-1;如果 key 不存在,则返回-2。
redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis>
APPEND
用法:
APPEND key value
将值附加到已存在的 key 中。如果 key 已经存在并且是一个字符串,则此命令会将值附加在字符串的末尾。若 key 不存在,它将被创建并设置为空字符串,所以在这种特殊情况下,APPEND 将类似于 set。
例子:
redis> EXISTS mykey
(integer) 0
redis> APPEND mykey "Hello"
(integer) 5
redis> APPEND mykey " World"
(integer) 11
redis> GET mykey
"Hello World"
redis>
COPY
用法:
COPY source destination [DB destination-db] [REPLACE]
将 key 复制到另一个数据库,key 是要复制的键名。如果指定了destination-db,则将 key 复制到指定的目标数据库。如果不指定TO destination-db,则将 key 复制到当前数据库。返回1 表示复制成功,返回0表示未复制成功。
SET dolly "sheep"
COPY dolly clone
GET clone