私はredisキーストアに1つのリストを持っています。これは、このようなキー名として日付を含んでいます。lua sciptの降順でキーリストを取得
key
===
20160429
20160430
20160501
20160502
私は最後の2つのキーをキーしたいと思います。これは私のルアスクリプトでは次のようにしています。
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
を必要とするどのように私は、キーのリストを降順得るのですか? Luaのテーブルをソートするため
ありがとう@felixb、それは私の期待された結果に非常に近いです。私は私の質問で言及したように、ASCの順序で最終的な結果が必要です。 –
コードを更新しました。最後の2つの要素が常に対応する順序で提供されるようになりました。希望(まだテストされていない) – FelixB
おかげで、少しの変更とその作品:iCtr =#keyslist-1、#keyslist do –