从Tarantool空间获取1个随机记录

我有一个带有2个条件的查询,每个请求返回1个记录,每次都按照插入到空间中的顺序进行

box.space.extensions.index.secondary:select(
        {city, 0},
        {limit=1}
    )

样本:

{1}
{2}
{3}

我需要每个请求随机获取一条记录。 样本:

{3}
{1}
{2}
点赞
用户8621712
用户8621712

根据 tarantool API,select 返回元组数组,所以这是一个普通的 Lua 表格,您可以自己操作它。 如果您想要随机请求内容,您需要使用 table.Shuffle。 如果您想从请求中获取一个随机项目,可以使用 tbl [math.random (#tbl)]

这里是 table.Shuffle 代码的示例

function table.Shuffle(tbl)
    for i = #tbl, 2, -1 do
        local j = math.random(i)
        tbl[i], tbl[j] = tbl[j], tbl[i]
    end
end
2020-11-06 15:20:31