0

tiには、次のような並べ替えられたセットがあります。

    |key  |score |member
zadd mykey 100    event:1
zadd mykey 101    event:2
zadd mykey 102    event:3

今、私はlua-scriptを使用して、指定されたスコア範囲からサブセットを返します

var result = redis.call('zrangebyscore', 'mykey', start, stop, 'WITHSCORES')

結果-テーブルはlua-scriptでどのようになりますか?(私はデバッグできないので、私は尋ねなければなりません)

redis-docから:Redisマルチバルク応答-> Luaテーブル(他のRedisデータ型がネストされている場合があります)-これが私が見つけることができるすべての情報です。

それは次のようになります:

result = { 'event:1', 100, 'event:2', 101, 'event:3', 102 }

または好き

result = { 100, 'event:1', 101, 'event:2', 102, 'event:3' }

または違う?

4

2 に答える 2

2

からの結果、zrangebyscore ... withscoresまたは実際にはスコア付きのソートされたセットからの読み取りは、次のような lua テーブルとして返されます。

result = { "event:1", "100", "event:2", "101" }

値が最初で、スコアが 2 番目です。値とスコアはどちらも文字列です。

于 2012-09-05T10:47:11.313 に答える
1

使用しているものが標準出力に書き込めると仮定すると、ダンプ機能を追加してテーブル形式を出力できます。

私が使う

function dump (tt, label,indent, done)
    if debug == true then
       if label == nil then
          label = 'Dump'
       end
        done = done or {}
        indent = indent or 0
        if type(tt) == "table" then
            if indent == 0 then
                io.write(string.rep (" ", indent))
                io.write(label..'\n')
            end
            for key, value in pairs (tt) do
                io.write(string.rep (" ", indent)) -- indent it
                if type (value) == "table" and not done [value] then
                    done [value] = true
                    io.write(string.format("[%s] => table\n", tostring (key)));
                    io.write(string.rep (" ", indent+4)) -- indent it
                    io.write("(\n");
                    dump (value, tostring(key),indent + 7, done)
                    io.write(string.rep (" ", indent+4)) -- indent it
                    io.write(")\n");
                else
                    io.write(string.format("[%s] => %s\n",
                    tostring (key), tostring(value)))
                end
            end
        else
            io.write(tostring(label)..':'..tostring(tt))
        end
    else
        return
    end
end

したがって、あなたの例では、単に追加します

debug = true
dump(var,'redis-table')
于 2012-09-05T10:39:28.093 に答える