Redis EVAL-per-event 或 EVAL-all-events-at-once

如果您每秒有约50个事件,每个事件都应该进行事务处理(进行3个SADD操作),哪种更好:

  1. 每个事件运行一个Lua脚本(通过EVALSHA)?
  2. 运行遍历所有事件并同时更新它们的单个Lua脚本?

我的考虑是:单个EVAL至少不会比EVAL-per-event慢。主要的担心是脚本执行时间。据我所知,它应该阻塞所有Redis命名空间上的所有操作。但是我认为我不应该担心一个EVAL中的150个SADD操作,对吗?

点赞
用户5384363
用户5384363

你最好在你的生产环境中进行一些基准测试,虽然我认为 150 个操作太多了,会阻塞 Redis 一段时间。

实际上,你还有另一个选择:在管道中运行 50 个 Lua 脚本。使用管道,你的每个 Lua 脚本不会长时间阻塞 Redis,即只有 3 个操作,并且它可以节省大量的往返时间,并且应该比 50 个EVALSHA 命令要快得多。

2019-08-30 15:02:32