コード例 #1
0
        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();
        }
コード例 #2
0
ファイル: RedisMutiKey.cs プロジェクト: zwq00000/Redis.Net
        /// <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);
        }
コード例 #3
0
        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();
        }
コード例 #4
0
ファイル: RedisMutiKey.cs プロジェクト: zwq00000/Redis.Net
        /// <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);
        }