跳到主要内容

通用

2025年01月10日
柏拉文
越努力,越幸运

前言


Redis 文档

一、del


1.1 认识

delRedis 中用于删除键的命令,可以删除一个或多个键。

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 认识

ttlRedis 中的命令,用于查看指定键的生存时间(即过期时间)。它返回指定键剩余的存活时间,以秒为单位。如果键不存在或没有设置过期时间,返回 -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 认识

authRedis 用来进行身份验证的命令,它用于验证客户端连接的密码或用户名密码对。通常,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 认识

keysRedis 中的一个命令,用于查找与给定模式匹配的所有键。这个命令的主要作用是通过模式(例如通配符)来获取所有符合条件的键。

4.2 语法

keys(pattern: string, callback?: Callback<string[]>): Promise<string[]>
  • pattern (string): 这是一个模式(模式支持通配符)。Redis 会返回所有与该模式匹配的键。常用的通配符包括:

    • *: 匹配任意数量的字符。

    • ?: 匹配单个字符。

    • []: 匹配字符集中的任意字符(例如 [a-z])。

    • {}: 匹配指定的多个模式(例如 {foo,bar,baz} 会匹配 foobarbaz)。

  • callback? (Callback<string[]>): 可选的回调函数,接收返回的键数组。如果没有提供回调函数,则返回一个 Promise

五、ping


5.1 认识

pingRedis 中的一个命令,用于检查 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 认识

typeRedis 中的一个命令,用于检查某个键的类型。这个命令可以帮助你了解指定键存储的数据类型,是字符串、哈希、列表、集合、有序集合,还是其他类型。

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 认识

configRedis 提供的一个命令,用于管理 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): 对于 GETSET 子命令,这些是你要获取或设置的配置项及其值。例如,你可以获取某个特定配置参数的值,或者设置某个参数的新值。对于 SET,你需要提供键值对:参数名和新的值。

  • callback? (Callback<unknown>): 可选的回调函数,当提供时,将会处理命令的响应。

  • 返回值: Promise<unknown>, 执行后的返回值依赖于所执行的子命令。它可能是配置参数的值、命令的执行结果,或者其他与 Redis 配置相关的信息。

八、dbsize


8.1 认识

dbsizeRedis 提供的一个命令,用于获取当前数据库中键的数量。

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 认识

existsRedis 提供的一个命令,用于检查一个或多个键是否存在于当前数据库中。

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 认识

selectRedis 提供的一个命令,用于选择要操作的数据库。

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 认识

persistRedis 提供的一个命令,用于移除键的过期时间,使键变得永久有效。

12.2 语法

persist(key: RedisKey, callback?: Callback<number>): Promise<number>
  • key (RedisKey): 要操作的键名。

  • callback (Callback<number>, 可选): 一个可选的回调函数,接收命令的响应,返回值是一个数字。

十三、pexpire


13.1 认识

pexpireRedis 提供的一个命令,用于设置键的过期时间,以毫秒为单位。通过这个命令,您可以为某个键指定一个过期时间,一旦到达指定时间,键会被自动删除。

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 则是以秒为单位。