调试

调试 Redis Stack 函数的方法

Redis 开源 Redis Enterprise 软件 Redis Cloud Redis 开源 用于 Kubernetes 的 Redis Enterprise 客户端

概述

您可以使用两种方法来调试 Redis Stack 函数

  1. 明智地使用 redis.log 函数,该函数写入 Redis 日志文件。
  2. 使用 Redis pub/sub

使用 redis.log

如果您可以访问 Redis 日志文件,则 redis.log 是调试时使用的好方法。 但是,有一个缺点。 Redis Cloud 用户无法访问 Redis 日志文件,并且通常只有系统管理员才能在自托管安装上访问它们。 幸运的是,您也可以使用 Redis pub/sub,这将在下一节中讨论。

您无需执行任何特殊操作即可使用 redis.log,因为它始终可用。 这是一个例子

#!js api_version=1.0 name=lib

redis.registerFunction('hello', ()=> {
  redis.log('Hello log')
  return 'Hello from an external file'
})

加载库并使用 TFCALL 执行函数后,您将在 Redis 日志文件中看到如下内容

45718:M 01 Nov 2023 07:02:40.593 * <redisgears_2> Hello log

使用 Redis pub/sub

如果您无法访问 Redis 数据库日志文件,则可以使用 pub/sub。 以下示例演示了如何使用 client.call API 发布到 pub/sub 频道。

#!js api_version=1.0 name=lib

const logChannel = 'tfLogChannel'

function publog(client, message) {
  client.call('publish', logChannel, message)
}

redis.registerFunction('tflog', (client) => {
  publog(client, 'sample pub/sub log message')
  return 'sample'
})

在 CLI 会话中,订阅 tfLogChannel 频道并观看消息。

$ redis-cli
127.0.0.1:6379> subscribe tfLogChannel
1) "subscribe"
2) "tfLogChannel"
3) (integer) 1
Reading messages... (press Ctrl-C to quit or any key to type command)

在另一个 CLI 会话中,加载库,替换已经存在的内容,然后调用新函数

127.0.0.1:6379> TFCALL lib.tflog 0
"sample"

您将在上一个 CLI 会话中看到以下内容

1) "message"
2) "tfLogChannel"
3) "sample pub/sub log message"

使用 pub/sub 有一个缺点。 Redis pub/sub 提供至多一次的消息传递语义,这意味着一旦发送了消息,就不会再次发送。 因此,如果未消耗消息,它将永远消失。 这对于调试可能没问题,但从长远来看,redis.log 是日志持久性的更好解决方案。

评价此页面
返回顶部 ↑