REDIS 键命令整理

redis 键命令

Redis 键命令用于管理 redis 的键. 原文

语法

COMMAND key [key ...]

键命令

DEL

删除指定键, 返回被删除键的数量, 若键不存在直接忽略. 官方文档

语法

DEL key [key ...]

返回值

  • 被删除键的数量

示例

redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> DEL key1 key2 key3
(integer) 2 

EXISTS

检测指定键是否存在. 官方文档

语法

EXISTS 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

EXPIRE

设置键 key 的有效期, 若 key 有效期已存在则更新. 过了有效期后, 键 key 会被自动删除 官方文档

语法

EXPIRE key seconds
  • seconds 有效期, 单位秒.

返回值

  • 1 有效期被设值成功
  • 0 key 不存在

示例

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> TTL mykey    -- 10 秒执行
(integer) -2       -- key 不存在返回 -2     
redis> SET mykey "Hello World"
"OK"
redis> TTL mykey
(integer) -1       -- key 没有有效期关联返回 -1

PEXPIRE 同 EXPIRE, 区别 PEXPIRE 单位为毫秒

EXPIREAT

功能类似 EXPIRE, 不过此命令设置的有效期是时间点, 值为自1970年1月1日以来的秒数. 官方文档

语法

EXPIREAT key timestamp
  • timestamp 时间戳

返回值

  • 1 有效期被设值成功
  • 0 key 不存在

示例

redis> SET mykey "Hello"
"OK"
redis> EXISTS mykey
(integer) 1
redis> EXPIREAT mykey 1293840000
(integer) 1
redis> EXISTS mykey
(integer) 0

PEXPIREAT 同 EXPIREAT, 区别 PEXPIREAT 单位为毫秒

KEYS

返回所有匹配指定模式的 KEY. 该指令通常用于调试问题, 尽量避免在应用代码中使用, 若有类似需求可以考虑使用 SCAN 命令或者 sets 数据结构. 官方文档

语法

KEYS pattern

支持的模式 pattern 的规则如下:

  • h?llo 匹配 hello, hallo, hxllo ...
  • h*llo 匹配 hllo, heeeello ...
  • h[ae]llo 匹配 hello, hallo. 不能匹配 hillo
  • h[^e]llo 匹配 hallo, hbllo ... 不能匹配 hello
  • h[a-b]llo 匹配 hallo and hbllo

返回值

  • 匹配 key 列表

示例

redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*
1) "lastname"
2) "firstname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "lastname"
2) "age"
3) "firstname"

MIGATE

迁移指定 KEY. 官方文档

语法

MIGRATE host port key|"" destination-db timeout [COPY] [REPLACE] [KEYS key [key ...]]

选项

  • COPY 不删除当前实例中的 KEY
  • REPLACE 替换远程实例已存在的 KEY
  • KEYS 指定 KEY, 若为空则为所有 KEY

返回值

  • OK 命令执行成功
  • NOKEY 当前实例为空

实例

MIGRATE 192.168.1.34 6379 "" 0 5000 KEYS key1 key2 key3

MOVE

将指定 KEY 移至指定 DB. 官方文档

语法

MOVE key db

返回值

  • 1 指定 KEY 被移动成功
  • 0 指定 KEY 不存在

OBJECT

查看 Redis 的内部对象, 通常用于调试. 官方文档

语法

OBJECT subcommand [arguments [arguments ...]]

OBJECT 命令支持的子命令:

  • OBJECT REFCOUNT <key> 返回指定 KEY 关联值引用的数量.
  • OBJECT ENCODING <key> 返回指定 KEY 关联值存贮的编码方式
  • OBJECT IDLETIME <key> 返回指定 KEY 未使用的时长
  • OBJECT FREQ <key> 返回指定 KEY 使用频率
  • OBJECT HELP 打印该命令帮助信息

示例

redis> lpush mylist "Hello World"
(integer) 4
redis> object refcount mylist
(integer) 1
redis> object encoding mylist
"ziplist"
redis> object idletime mylist
(integer) 10

PERSIST

移除 key 的过期时间. 官方文档

语法

PERSIST key

返回值

  • 1 指定 key 的过期时间被移除
  • 0 指定 key 不存在或未设置过期时间

示例

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> PERSIST mykey
(integer) 1
redis> TTL mykey
(integer) -1

RANDOMKEY

从当前数据库中返回一个随机 KEY. 官方文档

返回值

  • key 一个随机 KEY
  • nil 数据库为空时返回

RENAME

重命名 KEY, 若新 KEY 已存在则会被覆盖. 官方文档

语法

RENAME key newkey

示例

redis> SET mykey "Hello"
"OK"
redis> RENAME mykey myotherkey
"OK"
redis> GET myotherkey
"Hello"

RENAME

重命名 KEY, 若新 KEY 已存在则会出错. 官方文档

语法

RENAMENX key newkey

示例

redis> SET mykey "Hello"
"OK"
redis> SET myotherkey "World"
"OK"
redis> RENAMENX mykey myotherkey
(integer) 0
redis> GET myotherkey
"World"

SCAN

遍历当前数据库 key. 官方文档

语法

RENAMENX cursor
  • cursor 起始光标

返回值

  • cursor 下次 SCAN 的其实位置

示例

redis> SET mykey "Hello"
"OK"
redis> SET myotherkey "World"
"OK"
redis> RENAMENX mykey myotherkey
(integer) 0
redis> GET myotherkey
"World"

SORT

排序数据结构 list, set, sorted set 的 key. 官方文档

示例

SORT mylist   # 默认升序 key 为数字
SORT mylist DESC  # 降序 key 为数字
SORT mylist ALPHA # 字典序 key 为字符串
SORT mylist LIMIT 0 10 # 分页
SORT mylist LIMIT 0 5 ALPHA DESC # 选项组合
SORT mylist BY weight_* # 外部 KEY 排序  weight_1, weight_2, ...
SORT mylist BY nosort # 跳过排序 KEY, 获取外部 KEY
SORT mylist BY weight_* GET object_* # 获取指定外部 KEY, GET 选项可以使用多次, 获取 GET 本身使用模式符 #, 如: SORT mylist BY weight_* GET object_* GET #
SORT mylist BY weight_* STORE resultkey # 存贮排序结果  
SORT mylist BY weight_*->fieldname GET object_*->fieldname # 指定对象排序的 KEY

TOUCH

更新 KEY 的最后访问时间, 若 KEY 不存在则忽略. 官方文档

语法

TOUCH key [key ...]

返回值

  • 返回被更新 KEY 的个数.

示例

redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> TOUCH key1 key2
(integer) 2

TTL

获取的 KEY 的过期时间. 官方文档

语法

TTL key

返回值

  • 指定 key 的过期时间
  • -2 指定 key 不存在
  • -1 指定 key 未设置过期时间

示例

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10

** PTTL 同 TTL, 区别 PTTL 返回时间单位是毫秒**

TYPE

获取指定 KEY 的数据类型. 官方文档

语法

TYPE key

返回值

  • 指定 key 的过期时间
  • none 指定 key 不存在

示例

redis> SET key1 "value"
"OK"
redis> LPUSH key2 "value"
(integer) 1
redis> SADD key3 "value"
(integer) 1
redis> TYPE key1
"string"
redis> TYPE key2
"list"
redis> TYPE key3
"set"

同 DEL 指令, UNLINK 是从 KEY 空间中移除指定 KEY, 是内存级删除非阻塞. 实际删除将在后续持久化中发生. 官方文档

语法

UNLINK key [key ...]

返回值

  • 被移除 KEY 的数量.

示例

redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> UNLINK key1 key2 key3
(integer) 2

WAIT (待完善)

阻塞当前客户端直到之前所有写命令被成功备份或到达指定的备份命令的数量, 若指定的超时(单位毫秒)到达将返回还未成功备份的命令数量. 官方文档

语法

WAIT numreplicas timeout
  • numreplicas 备份的数量
  • timeout 阻塞超时时间

返回值

  • 备份的数量

示例

> SET foo bar
OK
> WAIT 1 0
(integer) 1
> WAIT 2 1000
(integer) 1
posted @ 2019-08-05 17:17  ~逍遥~  阅读(792)  评论(0编辑  收藏  举报