我正在使用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)