通用
前言
一、del
1.1 认识
del
是 Redis
中用于删除键的命令,可以删除一个或多个键。
1.2 语法
del(...args: [...keys: RedisKey[], callback: Callback<number>]): Promise<number>
del(...args: [keys: RedisKey[], callback: Callback<number>]): Promise<number>
del(...args: RedisKey[]): Promise<number>
del(...args: [keys: RedisKey[]]): Promise<number>
-
keys (RedisKey[] or RedisKey)
: 需要删除的一个或多个键名。可以是多个键的数组,也可以是单个键。 -
callback? (Callback<number>)
: 可选的回调函数,用于处理命令执行的结果。如果没有回调函数,返回一个Promise
,该Promise
会包含命令执行的结果。 -
返回值: 返回一个
Promise<number>
,表示命令执行的结果。返回值为: 删除的键的数量。del
会返回实际删除的键的数量,因此可以用来确认有多少键被删除。如果键不存在,则不会影响删除数量。
二、ttl
2.1 认识
ttl
是 Redis
中的命令,用于查看指定键的生存时间(即过期时间)。它返回指定键剩余的存活时间,以秒为单位。如果键不存在或没有设置过期时间,返回 -1
;如果键已经过期或已被删除,返回 -2
。返回 >=0
说明还有剩余过期时间。
2.2 语法
ttl(key: RedisKey, callback?: Callback<number>): Promise<number>
-
key (RedisKey)
: 需要查询的键名。 -
callback? (Callback<number>)
: 可选的回调函数,用于处理命令执行的结果。如果没有回调函数,返回一个Promise
,该Promise
会包含命令执行的结果。 -
返回值: 返回一个
Promise<number>
,表示指定键的剩余生存时间,number >= 0
, 键的剩余生存时间(以秒为单位);-1
, 键存在但没有设置过期时间;-2
, 键不存在。
三、auth
3.1 认识
auth
是 Redis
用来进行身份验证的命令,它用于验证客户端连接的密码或用户名密码对。通常,Redis
在配置时启用了密码保护,客户端必须提供正确的密码才能执行任何命令。
3.2 语法
auth(password: string | Buffer, callback?: Callback<"OK">): Promise<"OK">
auth(username: string | Buffer, password: string | Buffer, callback?: Callback<"OK">): Promise<"OK">
-
password (string | Buffer)
: 在Redis
配置了密码保护时,客户端需要提供正确的密码才能连接Redis
数据库。如果只需要提供密码,使用该参数。 -
username (string | Buffer)
: 如果Redis
使用了ACL
(访问控制列表)并且启用了多用户管理,需要提供用户名。用于验证指定用户的密码。 -
callback? (Callback<"OK">)
: 可选的回调函数,接收验证结果。如果没有提供回调函数,则返回一个Promise
。 -
返回值: 返回一个
Promise<"OK">
,如果身份验证成功,返回OK
字符串。如果密码或用户名错误,Redis
会返回一个错误信息。
四、keys
4.1 认识
keys
是 Redis
中的一个命令,用于查找与给定模式匹配的所有键。这个命令的主要作用是通过模式(例如通配符)来获取所有符合条件的键。
4.2 语法
keys(pattern: string, callback?: Callback<string[]>): Promise<string[]>
-
pattern (string)
: 这是一个模式(模式支持通配符)。Redis
会返回所有与该模式匹配的键。常用的通配符包括:-
*
: 匹配任意数量的字符。 -
?
: 匹配单个字符。 -
[]
: 匹配字符集中的任意字符(例如[a-z]
)。 -
{}
: 匹配指定的多个模式(例如{foo,bar,baz}
会匹配foo
、bar
或baz
)。
-
-
callback? (Callback<string[]>)
: 可选的回调函数,接收返回的键数组。如果没有提供回调函数,则返回一个Promise
。
五、ping
5.1 认识
ping
是 Redis
中的一个命令,用于检查 Redis
服务器是否可用。它可以发送一个简单的 PING
请求,Redis
服务器应该返回一个 PONG
响应,表示服务器正常工作。
5.2 语法
ping(callback?: Callback<"PONG">): Promise<"PONG">
ping(message: string | Buffer, callback?: Callback<string>): Promise<string>
-
message (string | Buffer)
: 可选参数。如果指定了该参数,Redis
会返回指定的消息,而不是默认的PONG
。该消息可以是字符串或Buffer
类型。如果不传递此参数,Redis
默认会返回PONG
。 -
callback? (Callback<string> or Callback<"PONG">)
: 可选的回调函数,接收服务器的响应。如果没有提供回调函数,返回一个Promise
。 -
返回值: 如果没有指定消息,
ping
命令会返回PONG
。如果指定了消息,Redis
会返回你指定的消息。
六、type
6.1 认识
type
是 Redis
中的一个命令,用于检查某个键的类型。这个命令可以帮助你了解指定键存储的数据类型,是字符串、哈希、列表、集合、有序集合,还是其他类型。
6.2 语法
type(key: RedisKey, callback?: Callback<string>): Promise<string>
-
key (RedisKey)
: 这是你想要检查类型的键。可以是任何有效的Redis
键(如字符串、数字或Buffer
)。 -
callback? (Callback<string>)
: 可选的回调函数,它接收键的类型作为参数。如果没有提供回调,函数返回一个Promise
。 -
返回值: 该命令返回一个表示键类型的字符串。可能的返回类型包括:
-
string
, 键存储的是字符串。 -
list
, 键存储的是列表。 -
set
, 键存储的是集合。 -
zset
, 键存储的是有序集合(sorted set
)。 -
hash
, 键存储的是哈希。 -
none
, 键不存在。 -
stream
, 键存储的是流(在Redis Stream
中)。
-
七、config
7.1 认识
config
是 Redis
提供的一个命令,用于管理 Redis
配置参数。这个命令可以执行多种子命令,用于获取、设置和重写 Redis
配置。
7.2 语法
config(...args: [subcommand: "GET", ...parameters: (string | Buffer)[], callback: Callback<unknown>]): Promise<unknown>
config(...args: [subcommand: "GET", ...parameters: (string | Buffer)[]]): Promise<unknown>
config(subcommand: "HELP", callback?: Callback<unknown>): Promise<unknown>
config(subcommand: "RESETSTAT", callback?: Callback<unknown>): Promise<unknown>
config(subcommand: "REWRITE", callback?: Callback<unknown>): Promise<unknown>
config(...args: [subcommand: "SET", ...parameterValues: (string | number | Buffer)[], callback: Callback<unknown>]): Promise<unknown>
config(...args: [subcommand: "SET", ...parameterValues: (string | number | Buffer)[]]): Promise<unknown>
-
subcommand
: 子命令用于指定要执行的操作,可以是以下之一-
GET
: 获取配置参数的当前值。 -
SET
: 设置某个配置参数的值。 -
HELP
: 获取关于config
命令的帮助信息。 -
RESETSTAT
: 重置Redis
统计信息。 -
REWRITE
: 重写Redis
配置文件。
-
-
parameters (string | Buffer)
: 对于GET
或SET
子命令,这些是你要获取或设置的配置项及其值。例如,你可以获取某个特定配置参数的值,或者设置某个参数的新值。对于SET
,你需要提供键值对:参数名和新的值。 -
callback? (Callback<unknown>)
: 可选的回调函数,当提供时,将会处理命令的响应。 -
返回值:
Promise<unknown>
, 执行后的返回值依赖于所执行的子命令。它可能是配置参数的值、命令的执行结果,或者其他与Redis
配置相关的信息。
八、dbsize
8.1 认识
dbsize
是 Redis
提供的一个命令,用于获取当前数据库中键的数量。
8.2 语法
dbsize(callback?: Callback<number>): Promise<number>
-
callback? (Callback<number>)
: 可选的回调函数,当提供时,将会处理命令的响应。返回值是当前数据库中存储的键的数量。 -
返回值:
Promise<number>
, 返回一个数字,表示当前数据库中键的总数量。
九、expire
9.1 认识
expire <key> <seconds>
: 为键设置过期时间, 用于为指定的键设置生存时间(过期时间),当生存时间到期后,键会被自动删除。返回 1
表示成功为键设置了过期时间。返回 0
表示设置失败(如果键不存在)。时间复杂度为 O(1)
过期键与持久化: 在持久化时,过期时间会保存到 RDB
文件或 AOF
文件中。如果 Redis
重启,过期键的生存时间会根据过期时间重新计算。
过期键的删除机制: Redis
不保证精确的到期时间,因为过期键的删除是由后台线程或访问触发的。Redis
使用 惰性删除 和 定期删除 机制处理过期键。惰性删除:只有当过期键被访问时才会检查并删除。定期删除:Redis
会定期扫描一部分键来删除已过期的键。
多个过期设置的覆盖: 如果对同一个键多次调用 EXPIRE
,后一次调用会覆盖之前的过期时间。
9.2 语法
expire(key: RedisKey, seconds: string | number, callback?: Callback<number>): Promise<number>
expire(key: RedisKey, seconds: string | number, nx: "NX", callback?: Callback<number>): Promise<number>
expire(key: RedisKey, seconds: string | number, xx: "XX", callback?: Callback<number>): Promise<number>
expire(key: RedisKey, seconds: string | number, gt: "GT", callback?: Callback<number>): Promise<number>
expire(key: RedisKey, seconds: string | number, lt: "LT", callback?: Callback<number>): Promise<number>
-
key (RedisKey)
: 要设置过期时间的键名。 -
seconds (string | number)
: 键的过期时间,单位是秒。过期时间为seconds
秒后,键会被删除。 -
nx ("NX")
: 可选参数,表示只有在键不存在时才设置过期时间。如果键已存在,则不会更新过期时间。 -
xx ("XX")
: 可选参数,表示只有在键存在时才设置过期时间。如果键不存在,则不会设置过期时间。 -
gt ("GT")
: 可选参数,表示只有当当前过期时间大于指定的seconds
时,才会更新过期时间。 -
lt ("LT"):
: 可选参数,表示只有当当前过期时间小于指定的seconds
时,才会更新过期时间。 -
callback? (Callback<number>)
: 可选的回调函数,用于处理命令执行的结果。如果没有回调函数,返回一个Promise
,该Promise
会包含命令执行的结果。 -
返回值: 返回一个
Promise<number>
,表示命令执行的结果。返回值为1
表示成功设置了过期时间,返回 0 表示没有设置过期时间(如键已存在但未使用NX
,或未满足其他条件)。
十、exists
10.1 认识
exists
是 Redis
提供的一个命令,用于检查一个或多个键是否存在于当前数据库中。
10.2 语法
exists(...args: [...keys: RedisKey[], callback: Callback<number>]): Promise<number>
exists(...args: [keys: RedisKey[], callback: Callback<number>]): Promise<number>
exists(...args: RedisKey[]): Promise<number>
exists(...args: [keys: RedisKey[]]): Promise<number>
-
...args (RedisKey[] 或 RedisKey[] 和 callback)
: 传入一个或多个Redis
键,Redis
会检查这些键是否存在。如果键存在,则返回1
;如果不存在,则返回0
。可选地,你可以传入一个回调函数callback
来处理命令的响应。 -
返回值:
Promise<number>
, 返回一个数字,表示检查的键中存在的键的数量, 如果传入了多个键,返回的数字是存在的键的数量。exists
命令接受一个或多个键作为参数,检查这些键是否存在。如果有一个或多个键存在,则返回1
,否则返回0
。如果传入多个键,它会返回存在键的数量。
十一、select
11.1 认识
select
是 Redis
提供的一个命令,用于选择要操作的数据库。
11.2 语法
select(index: string | number, callback?: Callback<"OK">): Promise<"OK">
-
index (string | number)
: 选择的数据库索引。Redis
默认数据库是0
,可以使用index
参数选择其他数据库(最多支持16
个数据库,默认情况下索引范围是0-15
)。index
可以是数字或字符串类型,通常使用数字表示数据库索引。 -
callback (Callback<"OK">, 可选)
: 一个可选的回调函数,接收命令的响应OK
。 -
返回值:
Promise<"OK">
, 当选择数据库成功时,返回OK
字符串。
十二、persist
12.1 认识
persist
是 Redis
提供的一个命令,用于移除键的过期时间,使键变得永久有效。
12.2 语法
persist(key: RedisKey, callback?: Callback<number>): Promise<number>
-
key (RedisKey)
: 要操作的键名。 -
callback (Callback<number>, 可选)
: 一个可选的回调函数,接收命令的响应,返回值是一个数字。
十三、pexpire
13.1 认识
pexpire
是 Redis
提供的一个命令,用于设置键的过期时间,以毫秒为单位。通过这个命令,您可以为某个键指定一个过期时间,一旦到达指定时间,键会被自动删除。
13.2 语法
pexpire(key: RedisKey, milliseconds: string | number, callback?: Callback<number>): Promise<number>
pexpire(key: RedisKey, milliseconds: string | number, nx: "NX", callback?: Callback<number>): Promise<number>
pexpire(key: RedisKey, milliseconds: string | number, xx: "XX", callback?: Callback<number>): Promise<number>
pexpire(key: RedisKey, milliseconds: string | number, gt: "GT", callback?: Callback<number>): Promise<number>
pexpire(key: RedisKey, milliseconds: string | number, lt: "LT", callback?: Callback<number>): Promise<number>
-
key (RedisKey)
: 要设置过期时间的键名。 -
nx ("NX")
: 如果键不存在,则设置过期时间;如果键已存在,则不设置。 -
xx ("XX")
: 如果键存在,则设置过期时间;如果键不存在,则不设置。 -
gt ("GT")
: 如果当前剩余的TTL
大于提供的时间值,则设置过期时间。 -
lt ("LT")
: 如果当前剩余的TTL
小于提供的时间值,则设置过期时间。 -
milliseconds (string | number)
: 键的过期时间,单位为毫秒。 -
callback (Callback<number>, 可选)
: 可选的回调函数,用于返回操作结果。 -
返回值:
Promise<number>
返回1
表示操作成功(即设置了过期时间)。返回0
表示操作失败(例如键不存在,或者未满足某些条件)。
13.3 expire vs pexpire
pexpire
设置的过期时间是精确到毫秒的,而 expire
则是以秒为单位。