·更新于 2026年4月21日· 50 次浏览 Redis脚本

Redis Lua 脚本与原子性:为什么不是万能事务

`EVAL` 在单实例上的原子语义;脚本阻塞与慢脚本风险;与 `MULTI/EXEC` 的选用场景对比。

Redis Lua 脚本与原子性:为什么不是万能事务
ZHOU YI

作者

ZHOU YI

Redis 执行 Lua 脚本时不会穿插其它命令,适合「读-改-写」一体的原子逻辑,如库存扣减与条件校验。

lua
redis.call('INCR', KEYS[1])
if tonumber(redis.call('GET', KEYS[1])) > tonumber(ARGV[1]) then
  return redis.error_reply('overflow')
end
return 1

注意

  • 避免在脚本中做重计算或大数据遍历
  • 集群模式下 key 需落在同一 slot(hash tag)
  • 脚本应版本化,避免热更新逻辑不一致

Guestbook

留言

若这篇文章也曾停在你心上,留一行字吧,我会看的。

先确认一下邮箱

多这一步,是为了少些机器骚扰,也让我能更踏实地读每一条真人写下的字。验证码 10 分钟内有效;同一邮箱 60 秒内只能发一封。

本文留言

0已加载 0

这里还静悄悄的——愿意做第一个留下脚印的人吗?