阅读 redis 事务文档时,我没有得到一件事:
事务中的所有命令都序列化并执行顺序。永远不会发生由另一个人发出的请求客户端在执行 Redis 的过程中提供服务交易。这保证了命令作为单个隔离操作。
寄件人: https://redis.io/topics/transactions
粗体的片段是让我烦恼的片段。这是否意味着在一个请求中设置键 A 的值时,另一个想要为键 B 设置值的请求将被阻止,直到第一个请求完成?
不,使用 MULTI
打开事务不会阻止与 redis 的其他并发连接。
https://redis.io/topics/transactions#usage
使用 MULTI 命令输入 Redis 事务。该命令始终回复"确定"。此时,用户可以发出多个命令。Redis 不会执行这些命令,而是将它们排队。调用
EXEC
后,将执行所有命令。
在事务中收集命令,直到您关闭事务。之后,表彰将一一执行,不会中断。这意味着,如果其他连接在之后提交,则它们仍然可以在仍然打开的事务的命令之前执行,而它们仍然在关闭事务之前提交。