如果redis是单线程的,为什么我们需要在redis中使用eval命令?

如果redis是单线程的,为什么我们需要在redis中使用eval命令?,redis,Redis,在REDIS中执行命令的一种方法是通过EVAL脚本 Redis使用相同的Lua解释器来运行所有命令。阿尔索 Redis保证脚本以原子方式执行:没有其他方式 脚本或Redis命令将在脚本运行时执行 执行 既然redis是单线程的,为什么我们需要EVAL来提供原子性呢?我希望这是一个运行线程所暗示的 我错过什么了吗?抱歉,如果我的问题很简单,我对redis很陌生,redis使用一个线程来执行来自许多不同客户端的命令。因此,如果您希望一个客户机中的一组命令按顺序执行,则需要一种方法来指导Redis执行

在REDIS中执行命令的一种方法是通过EVAL脚本

Redis使用相同的Lua解释器来运行所有命令。阿尔索 Redis保证脚本以原子方式执行:没有其他方式 脚本或Redis命令将在脚本运行时执行 执行

既然redis是单线程的,为什么我们需要EVAL来提供原子性呢?我希望这是一个运行线程所暗示的


我错过什么了吗?抱歉,如果我的问题很简单,我对redis很陌生,redis使用一个线程来执行来自许多不同客户端的命令。因此,如果您希望一个客户机中的一组命令按顺序执行,则需要一种方法来指导Redis执行。这就是
EVAL
的作用。没有它,Redis可以将来自其他客户端的命令的执行与您的交互。

Redis使用单个线程来执行来自多个不同客户端的命令。因此,如果您希望一个客户机中的一组命令按顺序执行,则需要一种方法来指导Redis执行。这就是
EVAL
的作用。没有它,Redis可以将来自其他客户端的命令的执行与您的交互。

Redis中的每个(数据路径)命令实际上都是原子的
EVAL
允许您使用脚本编写“原子”命令,该脚本可以包含许多Redis命令,更不用说控制结构和一些有助于实现服务器端逻辑的其他实用程序了。为了实现多个命令的类似“原子性”,您还可以顺便使用
MULTI/EXEC

如果没有
EVAL
MULTI/EXEC
块,您的命令将一个接一个地运行,但其他客户端的命令可能会在它们之间交错。使用脚本或事务可以消除这一点。

Redis中的每个(数据路径)命令实际上都是原子的
EVAL
允许您使用脚本编写“原子”命令,该脚本可以包含许多Redis命令,更不用说控制结构和一些有助于实现服务器端逻辑的其他实用程序了。为了实现多个命令的类似“原子性”,您还可以顺便使用
MULTI/EXEC

如果没有
EVAL
MULTI/EXEC
块,您的命令将一个接一个地运行,但其他客户端的命令可能会在它们之间交错。使用脚本或事务可以消除这种情况