DiceDB 是一个响应式数据库,允许你创建查询订阅。当你 WATCH(监视)某个特定的键或命令时,DiceDB 会主动执行查询,并在数据发生变化时将结果发送给你。

这就不再需要定期轮询数据库以检测变化或处理变化事件了。为了演示这一点,下面是一个快速的“Hello, World!”示例。

不过,在开始之前,请确保你已经完成了Hello, World!示例。

监视一个键

为了了解什么是响应性,我们来监视一个键。

你需要打开三个终端会话,并通过 DiceDB CLI 连接到相同的 DiceDB 服务器。

在前两个终端会话中,运行以下命令来监视 k1 键:

  1. localhost:7379> GET.WATCH k1

在第三个终端会话中,运行以下命令将 k1 的值设置为 v1

  1. localhost:7379> SET k1 v1OK OK

在前两个终端会话中,你将看到以下输出:

  1. localhost:7379> GET.WATCH k1entered the watch mode for GET.WATCH k1OK [fingerprint=2356444921] v1

现在,如果你将 k1 的值更改为 v2,你将在前两个终端会话中看到以下输出:

  1. localhost:7379> GET.WATCH k1entered the watch mode for GET.WATCH k1OK [fingerprint=2356444921] v1OK [fingerprint=2356444921] v2

这就是响应性在实际操作中的表现。你正在监视 k1 键,并在它的值发生变化时接收到通知,而且不仅仅是一个变化事件,而是实际的结果集。这使得构建实时应用变得非常强大和灵活。

注意:在 CLI 中,你一次只能监视一个命令,但在编程中,你可以同时监视多个命令并行处理。你可以查看我们的聊天室示例,了解如何实现这一点。

还能监视什么?

任何只读命令都将有一个 .WATCH 版本,允许你监视该命令的结果。这是我们遵循的一个简单约定,目的是让你更容易理解正在被监视的内容。

我们正在为 DiceDB 中的所有查询命令实现 .WATCH 命令,目前我们支持 GET.WATCH 等命令,你可以在命令部分找到这些命令。随着后续版本的发布,我们将继续为所有查询命令提供 .WATCH 支持。