Redis使用Lua脚本处理大型循环

5

在Redis Lua脚本中,以下哪种循环在进行10,000次迭代时运行速度更快?或者它们的运行速度相同。

在Lua脚本中访问Redis键与访问本地变量(例如表中特定索引处的值)所需的时间是否相同?

local members = redis.pcall('smembers','10000memberset')

for i=1,table.getN(members) do

 local value = members[i]
  -- do some logic on the value

end

或者

for i=1,10000 do

  local value = redis.pcall('get',i) 
  -- do some logic on the value

end

谢谢!


2
运行代码,计时并告诉我们结果... - Itamar Haber
1
猜测而已,但我认为循环会更加昂贵。 - Itamar Haber
1
无论如何,你不应该在Lua中执行昂贵的任务,否则你会阻塞整个Redis服务器几毫秒甚至几秒钟。 - Matías Fidemraizer
#members 是新的方式 - Joe Andrews
1
在使用包含1,000,000个项目和1,000,000个键的Redis进行测试后,第二个循环速度快了6倍。20.5秒对比3.1秒。 - Joe Andrews
显示剩余7条评论
1个回答

6

在 Redis 中进行一百万个项目和一百万个键的测试后,第二个循环快了 6 倍。20.5 秒对比 3.1 秒。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接