介绍
在这个实验中,你将探索 Redis 事务。Redis 事务允许你将一组命令作为一个单独的、原子性的操作来执行,从而确保数据一致性。你将学习如何使用 MULTI
命令启动一个事务,将命令加入队列,然后执行或放弃该事务。你将练习在事务中设置键(key)、获取值(value)和递增计数器(counter)。
在这个实验中,你将探索 Redis 事务。Redis 事务允许你将一组命令作为一个单独的、原子性的操作来执行,从而确保数据一致性。你将学习如何使用 MULTI
命令启动一个事务,将命令加入队列,然后执行或放弃该事务。你将练习在事务中设置键(key)、获取值(value)和递增计数器(counter)。
在这一步中,你将学习如何使用 MULTI
命令在 Redis 中启动一个事务。Redis 事务确保一系列命令作为一个单独的、原子性的单元来执行。这意味着要么所有命令都成功,要么都不成功,从而保证数据完整性。
首先,在你的终端中使用 redis-cli
命令连接到 Redis 服务器:
redis-cli
现在你已经在 redis-cli
环境中,你可以开始一个事务。输入以下命令并按 Enter 键:
MULTI
你应该看到以下输出:
OK
这确认 Redis 已经进入事务模式。你输入的任何后续命令都将被加入队列,并在你使用 EXEC
命令时一起执行。
让我们将第一个命令加入队列。我们将设置一个名为 mykey
的键(key),其值为 myvalue
。输入以下命令并按 Enter 键:
SET mykey "myvalue"
输出应该为:
QUEUED
这表明 SET
命令已成功添加到事务队列中。在我们明确告知 Redis 执行之前,它不会被执行。
记住退出 redis-cli
环境以确保命令被记录:
exit
在这一步中,你将向事务队列添加更多命令,然后使用 EXEC
命令执行整个事务。
重新连接到 Redis 服务器:
redis-cli
因为我们有一个现有的事务,所以我们需要重新进入事务模式:
MULTI
现在,让我们将一个命令加入队列,以检索 mykey
的值:
GET mykey
你应该看到:
QUEUED
接下来,让我们添加另一个命令来设置一个不同的键(key),anotherkey
,其值为 anothervalue
:
SET anotherkey "anothervalue"
输出应该为:
QUEUED
最后,让我们加入一个 INCR
命令,以递增一个名为 mycounter
的计数器(counter)。如果 mycounter
不存在,Redis 将创建它并将其初始化为 0,然后再递增:
INCR mycounter
你应该看到:
QUEUED
你现在已经在事务中排队了几个命令。要一次性执行它们,请使用 EXEC
命令:
EXEC
输出应该类似于这样:
1) OK
2) "myvalue"
3) OK
4) (integer) 1
让我们分解一下输出:
1) OK
:SET mykey "myvalue"
命令的结果。2) "myvalue"
:GET mykey
命令的结果。3) OK
:SET anotherkey "anothervalue"
命令的结果。4) (integer) 1
:INCR mycounter
命令的结果。事务中的所有命令都以原子方式执行。
记住退出 redis-cli
环境以确保命令被记录:
exit
在这一步中,你将通过检索你设置的键(key)的值来验证上一个事务中的命令是否已正确执行。
重新连接到 Redis 服务器:
redis-cli
要检查这些值,请对每个键使用 GET
命令:
GET mykey
GET anotherkey
GET mycounter
你应该看到以下输出:
"myvalue"
"anothervalue"
"1"
这确认事务已成功执行,并且键的值已按预期更新。
记住退出 redis-cli
环境以确保命令被记录:
exit
在这一步中,你将学习如何使用 DISCARD
命令取消 Redis 事务。如果你决定不想执行已加入队列的命令,这将非常有用。
首先,连接到 Redis 服务器并启动一个新事务:
redis-cli
MULTI
现在,让我们将一些命令加入队列:
SET mykey "newvalue"
INCR mycounter
你应该看到每个命令的 QUEUED
响应。
现在,让我们取消事务,而不是执行它。使用 DISCARD
命令:
DISCARD
你应该看到:
OK
这确认事务已被取消,并且所有已加入队列的命令都已被丢弃。为了验证,你可以检查 mykey
和 mycounter
的值。它们不应该已被更新。
记住退出 redis-cli
环境以确保命令被记录:
exit
在这个实验中,你已经学习了如何使用 Redis 事务来原子性地执行多个命令。你练习了使用 MULTI
启动事务,将命令加入队列,使用 EXEC
执行事务,以及使用 DISCARD
取消事务。当执行复杂操作时,这些知识对于在 Redis 中保持数据一致性至关重要。