We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Redis 的单线程特性是指执行命令的线程,从任意个客户端接收到的命令都会被一个接一个执行。而事务(MULTI 和 EXEC)则会在 Redis 接收到 EXEC 命令时,将存储在事务队列的命令依次执行,执行期间不会被其他客户端的命令插入打断,即 Redis 事务是原子性的。
MULTI 和 EXEC 组成的事务在执行时不会被其他客户端打断,决解了“竞争条件”的问题。而 WATCH 命令则保证了:在任意个客户端连接的情况下,WATCH 到 EXEC 的整个代码逻辑(事务只是其中一部分)在执行期间数据的正确性(被 watch 的键未被改动)。
Redis 的原子性操作:
a. 把多个操作在 Redis 中实现成一个操作,即单命令操作; b. 事务(Redis 更推荐 Lua,并在开发者都使用 Lua 脚本替代事务时,删除事务)。 c. 把多个操作写到一个 Lua 脚本中,以原子性方式执行单个 Lua 脚本。
参考资料:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
读书笔记
书本以外的知识点(不断积累):
Redis 的单线程特性是指执行命令的线程,从任意个客户端接收到的命令都会被一个接一个执行。而事务(MULTI 和 EXEC)则会在 Redis 接收到 EXEC 命令时,将存储在事务队列的命令依次执行,执行期间不会被其他客户端的命令插入打断,即 Redis 事务是原子性的。
MULTI 和 EXEC 组成的事务在执行时不会被其他客户端打断,决解了“竞争条件”的问题。而 WATCH 命令则保证了:在任意个客户端连接的情况下,WATCH 到 EXEC 的整个代码逻辑(事务只是其中一部分)在执行期间数据的正确性(被 watch 的键未被改动)。
Redis 的原子性操作:
a. 把多个操作在 Redis 中实现成一个操作,即单命令操作;
b. 事务(Redis 更推荐 Lua,并在开发者都使用 Lua 脚本替代事务时,删除事务)。
c. 把多个操作写到一个 Lua 脚本中,以原子性方式执行单个 Lua 脚本。
参考资料:
The text was updated successfully, but these errors were encountered: