You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redis RediSearch查询默认仅返回10条结果,如何调整获取全部匹配数据?

问题原因

RediSearch的底层查询命令FT.SEARCH默认自带分页限制,默认参数为LIMIT 0 10,也就是默认只返回从第0位开始的10条结果,和Elasticsearch的默认size=10逻辑一致,该参数属于查询级配置,不需要修改全局Redis设置。

解决方案

你使用的NRediSearch客户端的Query类提供了Limit方法用于修改分页参数,只需在构造查询对象时添加对应配置即可:

NRediSearch.Query query = new NRediSearch.Query(searchString);
// 新增这一行配置,第一个参数为偏移量(分页起始位置),第二个参数为返回的最大条数
query.Limit(0, 100); // 这里设置为返回最多100条结果,可根据业务实际最大量级调整

如果需要实现分页查询,可将偏移量和返回条数作为方法入参动态传入即可。如果需要返回全部符合条件的结果,也可以先调用dbRedis.Count(query)先获取总匹配数,再动态设置Limit的第二个参数,避免硬编码数值不合理。

修改后的完整业务代码参考
public  List<DynamicDoc> GetFullMoc(string queryParm){
    var redisConection = ConnectionMultiplexer.Connect(GetParameter("REDIS_SERVER"));
    var dbRedis = new Client("feeders", redisConection.GetDatabase());

    string searchString = "@MOC:" + queryParm;
    NRediSearch.Query query = new NRediSearch.Query(searchString);
    
    string[] returnFields = { "Moc", "H_W","H_Y", "F"};
    query.ReturnFields(returnFields);
    query.WithPayloads = true;
    // 新增分页配置,直接拉取最多100条符合条件的结果
    query.Limit(0, 100);

    SearchResult res =  dbRedis.Search(query);
    List<DynamicDoc> dynamicDocs = new List<DynamicDoc>();


    foreach (Document doc in res.Documents)
    {
        IEnumerable<KeyValuePair<string, RedisValue>> record = doc.GetProperties();
        string jsonRecord = JsonConvert.SerializeObject(record);
        Dictionary<string, object> _record = JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonRecord);
        
        Console.WriteLine("\n \n \n ================" + doc.Id + "================ \n \n \n");
        foreach(var rec in _record){
            Console.WriteLine(rec);
        }
        
        DynamicDoc dynamicDoc = new DynamicDoc()
        {
                id = doc.Id,
                score = doc.Score,
                payload = _record
        };
        dynamicDocs.Add(dynamicDoc);
        
    }
    return dynamicDocs;
}
注意事项
  • 若符合条件的文档量级很大(过万条),不建议直接设置超大Limit一次性拉取全部数据,会占用过多内存和带宽,建议按业务场景做分页查询。
  • Limit的偏移量是从0开始计数,和Elasticsearch的from参数逻辑一致。

内容的提问来源于stack exchange,提问作者ojoaovitoraraujo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:24:03