public async Task SetAdd() { var set = new RedisSet<int>(GlobalSettings.Default, "set"); await set.Delete(); (await set.Add(1)).Is(true); (await set.Add(10)).Is(true); (await set.Add(1)).Is(false); (await set.Contains(1)).IsTrue(); (await set.Contains(1000)).IsFalse(); (await set.Members()).OrderBy(x => x).Is(1, 10); (await set.Length()).Is(2); var set2 = new RedisSet<MySetTestClass[]>(GlobalSettings.Default, "set2"); await set2.Delete(); (await set2.Add(new[] { new MySetTestClass { MyProperty = 100 }, new MySetTestClass { MyProperty = 300 } })).Is(true); (await set2.Add(new[] { new MySetTestClass { MyProperty = 500 }, new MySetTestClass { MyProperty = 900 } })).Is(true); (await set2.Add(new[] { new MySetTestClass { MyProperty = 100 }, new MySetTestClass { MyProperty = 300 } }, TimeSpan.FromSeconds(1))).Is(false); (await set2.Members()).SelectMany(xs => xs, (xs, x) => x.MyProperty).OrderBy(x => x).Is(100, 300, 500, 900); await Task.Delay(TimeSpan.FromMilliseconds(1500)); (await set.Exists()).IsTrue(); (await set2.Exists()).IsFalse(); }
/// <summary> /// Determines whether the read-only dictionary contains an element that has the specified key /// </summary> /// <param name="key"></param> /// <returns></returns> public bool ContainsKey(TKey key) { var result = _indexSet.Contains(key);; if (!result) { return(this.CheckExpired(key)); } return(result); }
public async Task SetAdd() { var set = new RedisSet <int>(GlobalSettings.Default, "set"); await set.Delete(); (await set.Add(1)).Is(true); (await set.Add(10)).Is(true); (await set.Add(1)).Is(false); (await set.Contains(1)).IsTrue(); (await set.Contains(1000)).IsFalse(); (await set.Members()).OrderBy(x => x).Is(1, 10); (await set.Length()).Is(2); var set2 = new RedisSet <MySetTestClass[]>(GlobalSettings.Default, "set2"); await set2.Delete(); (await set2.Add(new[] { new MySetTestClass { MyProperty = 100 }, new MySetTestClass { MyProperty = 300 } })).Is(true); (await set2.Add(new[] { new MySetTestClass { MyProperty = 500 }, new MySetTestClass { MyProperty = 900 } })).Is(true); (await set2.Add(new[] { new MySetTestClass { MyProperty = 100 }, new MySetTestClass { MyProperty = 300 } }, TimeSpan.FromSeconds(1))).Is(false); (await set2.Members()).SelectMany(xs => xs, (xs, x) => x.MyProperty).OrderBy(x => x).Is(100, 300, 500, 900); await Task.Delay(TimeSpan.FromMilliseconds(1500)); (await set.Exists()).IsTrue(); (await set2.Exists()).IsFalse(); }
/// <summary> /// 检查过去 Set 是否存在,如果不存在,则清除 过期索引 /// </summary> /// <param name="key"></param> /// <returns></returns> private bool CheckExpired(TKey key) { if (!_expireIndexSet.Contains(key)) { return(false); } var setKey = GetEntryKey(key); var setExiste = Database.KeyExists(setKey); if (!setExiste) { _expireIndexSet.Remove(key); } return(setExiste); }