using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Kean.Infrastructure.NoSql.Redis { /// /// 有序集合类型 /// public sealed class Zset : IValue { /// /// 初始化 Kean.Infrastructure.NoSql.Redis.Zset 类的新实例 /// internal Zset() { } /// /// 遍历处理 /// internal event Func>> OnRange; /// /// 添加处理 /// internal event Func OnAdd; /// /// 移除处理 /// internal event Func OnRemove; /// /// 获取有序集合 /// /// 键 /// 有序集合 public Value this[string key] { get { var value = new Value(key); value.OnRange += OnRange; value.OnAdd += OnAdd; value.OnRemove += OnRemove; return value; } } /// /// 有序集合值 /// public sealed class Value { private readonly string _key; /// /// 初始化 Kean.Infrastructure.NoSql.Redis.Zset.Value 类的新实例 /// /// internal Value(string key) => _key = key; /// /// 遍历处理 /// internal event Func>> OnRange; /// /// 添加处理 /// internal event Func OnAdd; /// /// 移除处理 /// internal event Func OnRemove; /// /// 遍历 /// /// 排序。如果为 True,表示升序;否则表示降序 /// public Task> Range(bool order = true) => OnRange(_key, order); /// /// 添加项 /// /// 值 /// 权重 public Task Add(string value, double score = 0) => OnAdd(_key, value, score); /// /// 移除项 /// /// 值 public Task Remove(string value) => OnRemove(_key, value); } } }