using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Kean.Infrastructure.NoSql.Redis { /// /// 哈希类型 /// public sealed class Hash : IValue { /// /// 初始化 Kean.Infrastructure.NoSql.Redis.Hash 类的新实例 /// internal Hash() { } /// /// 遍历处理 /// internal event Func>> OnRange; /// /// 读值处理 /// internal event Func> OnGet; /// /// 写值处理 /// internal event Func OnSet; /// /// 获取哈希值 /// /// 键 /// 哈希值 public Value this[string key] { get { var value = new Value(key); value.OnRange += OnRange; value.OnGet += OnGet; value.OnSet += OnSet; return value; } } /// /// 哈希值 /// public sealed class Value { private readonly string _key; /// /// 初始化 Kean.Infrastructure.NoSql.Redis.Hash.Value 类的新实例 /// /// internal Value(string key) => _key = key; /// /// 遍历处理 /// internal event Func>> OnRange; /// /// 读值处理 /// internal event Func> OnGet; /// /// 写值处理 /// internal event Func OnSet; /// /// 遍历 /// /// public Task> Range() => OnRange(_key); /// /// 读取字符串 /// /// 键 /// public Task Get(string key) => OnGet(_key, key); /// /// 写入字符串 /// /// 键 /// 值 public Task Set(string key, string value) => OnSet(_key, key, value); } } }