相关疑难解决方法(0)

ServiceStack Redis,如何将Lua表作为List返回

我正在使用ServiceStack的Redis客户端.我有一个Lua脚本,用几个Redis调用的结果填充一个Lua表.我想以某种方式返回此表.我的想法是使用来自客户端lib的方法ExecLuaShaAsList,并在lua脚本中执行"return myTable".它不起作用,我总是得到一个空列表.

如何将lua表返回给redis客户端?

这是我与Redis客户端一起使用的C#脚本:

using (var redisClient = GetPooledRedisClient())
{
    var sha1 = redisClient.LoadLuaScript(luaBody);
    List<string> theList = redisClient.ExecLuaShaAsList(sha1);
    int listLength = theList.Count(); //listLength is always 0 for some reason
}
Run Code Online (Sandbox Code Playgroud)

从以下答案后提示更新

这就是LuaBody的创建方式:

    private string GetLuaScript(List<CatalogItem> categories, List<CatalogItem> products)
    {
        string categoriesToAggregate = string.Join("\",\"", categories.Select(c=>c.Name));
        categoriesToAggregate = "\"" + categoriesToAggregate + "\"";

        string csSearchResult = string.Join("\",\"", products.Select(c => c.Name));
        csSearchResult = "\"" + csSearchResult + "\"";


        StringBuilder sb = new StringBuilder();
        sb.AppendLine("local categoriesToAggregate = {").Append(categoriesToAggregate).Append("}                        ");
        sb.AppendLine("local csSearchResult = {").Append(csSearchResult).Append("}                                      "); …
Run Code Online (Sandbox Code Playgroud)

lua redis lua-table

6
推荐指数
1
解决办法
3832
查看次数

标签 统计

lua ×1

lua-table ×1

redis ×1