我在Redis密钥库中有一个列表。它包含日期作为这样的键名。

key
===
20160429
20160430
20160501
20160502

现在,我想输入最后2个键,为此,我正在lua脚本中进行以下操作。
local data = {};
local keyslist = redis.call('keys', 'stats:day:*');
local key, users, redisData;
-- keyslist = #keyslist.sort(#keyslist, function(a, b) return a[2] > b[2] end);
-- keyslist = #keyslist.sort(#keyslist, function(a,b) if a>b then return true; else return false; end end);
for iCtr = 1, #keyslist do

    key = string.gsub(keyslist[iCtr], 'stats:day:','');
    redisData = redis.call('hmget', keyslist[iCtr], 'image','video');
    table.insert(data, {date=key, imgctr=redisData[1], vidctr=redisData[2]});
    if iCtr == 2 then break end
end

但这将返回前2条记录,我需要后2条记录(例如,以下键)
20160501
20160502

如何获得降序键列表?

最佳答案

如果我理解正确,则可能需要执行以下操作:

local count = 0
for iCtr = #keyslist-1,#keyslist do
  count=count+1
  --do your stuff
  if count == 2 then break end
  --or
  if iCtr == #keyslist then break end
end

这将从键列表中的倒数第二项开始,然后向上计数。
注意,我没有测试代码,但是应该可以。

10-08 10:56