【发布时间】:2015-08-27 14:50:25
【问题描述】:
对于 10,000 次迭代,以下哪个循环在 Redis Lua 脚本中运行得更快。或者它们会以相同的速度运行。
在 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
谢谢!
【问题讨论】:
-
运行代码,计时并告诉我们结果...
-
会做,只是想发帖看看有没有人尝试过这个。
-
只是猜测,但我会说循环会更昂贵
-
不管怎样,你不应该在Lua中做昂贵的任务,否则你会阻塞整个Redis服务器几毫秒甚至几秒..
-
在 redis 中使用 1,000,000 个项目集和 1,000,000 个键进行测试后,第二个循环快了 6 倍。 20.5s vs 3.1s