如何使用NRediSearch创建哈希索引方案并执行检索操作
NRediSearch实现哈希索引创建与检索操作
- 操作前请先安装依赖NuGet包:
NRediSearch、StackExchange.Redis
完整实现代码
using StackExchange.Redis; using NRediSearch; // 1. 初始化Redis连接 ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("你的Redis服务地址,如127.0.0.1:6379"); IDatabase db = redis.GetDatabase(); // 2. 初始化RediSearch客户端,绑定索引名feeders Client searchClient = new Client("feeders", db);
1. 创建哈希类型索引(对应原生FT.CREATE命令)
try { // 定义索引字段结构,四个字段均指定为TEXT类型 Schema schema = new Schema() .AddTextField("MOC") .AddTextField("H_W") .AddTextField("H_Y") .AddTextField("F"); // 配置索引规则:仅针对HASH类型数据、匹配键前缀为MOC: Client.ConfiguredIndexOptions indexOpts = new Client.ConfiguredIndexOptions(); indexOpts.SetPrefixes(new RedisValue[] { "MOC:" }); indexOpts.IndexedOn = Client.IndexedDataStructure.HASH; // 执行索引创建 searchClient.CreateIndex(schema, indexOpts); } catch (RedisServerException ex) when (ex.Message.Contains("Index already exists")) { // 索引已存在的异常逻辑,可根据业务需求自行调整 Console.WriteLine("索引已存在,无需重复创建"); }
2. 执行检索(对应原生FT.SEARCH命令)
// 构造检索条件,语法和原生RediSearch查询语法完全一致 Query query = new Query("@MOC: MOC111"); // 如需分页可追加Limit配置:query.Limit(0, 10) 表示返回前10条结果 SearchResult searchResult = searchClient.Search(query); // 遍历检索结果 foreach (Document doc in searchResult.Documents) { Console.WriteLine($"匹配的Redis键名:{doc.Id}"); Console.WriteLine($"MOC字段值:{doc["MOC"]}"); // 按需获取H_W、H_Y、F字段值即可 }
内容的提问来源于stack exchange,提问作者ojoaovitoraraujo
相关产品推荐
相关产品推荐

