问题描述:
我使用的环境是 .NetCore,我通过代码从redis数据库进行hash表的分页查询,
相关的代码如下
public static List<T> HashScan<T>(string key, int cursor, string pattern, int count)
{
//key:hashId;cursor:游标,0为从第一条记录查起,依次类推;
//pattern:好像是dataKey的匹配条件,因为我不需要条件,所以为"*";
//count:获取多少条记录
List<T> list = new List<T>();
var result = Cache.ScriptEvaluate(LuaScript.Prepare("return redis.call('HSCAN',@key,@cursor,'MATCH',@pattern,'COUNT',@count)"),
new { key = key, cursor = cursor, pattern = "*" + pattern + "*", count = count });
if (!result.IsNull)
{
var vals = (RedisResult[])((RedisResult[])result)[1];//可惜的是,这里获取到的vals是dataKey[],不是value,
//我的目的是获取所有记录的value,而不是dataKey
foreach (var item in vals)
{
list.Add(ConvertObj<T>(Unescape(item.ToString())));
}
}
return list;
}
//调用
for (int pageIndex = 0; pageIndex < pageCount; pageIndex++) //通过分页调用上面的函数
{
//pageIndex: 第几页; maxResultCount :每页几条记录; maxResultCount * pageIndex:上面函数的游标
List<Audit> auditList = RedisReadHelper.HashScan<Audit>("AMS_Log", maxResultCount * pageIndex, "*", maxResultCount);
//其它代码
}
我的问题:
我的这种分页查询只能获取到hash表的所有记录的key,而不是value,
而我的目的是value;
1.HSCAN命令是否可以获取到分页数据的value,如何获取?
2.如果HSCAN不能达此目的,可有其它的解决方案呢?
恳请各位能士帮忙,期待,期待