Exemple #1
0
        public async Task ClassDecrMin()
        {
            var v = new RedisClass <MyClass>(settings, "test-hash");

            await v.SetField("a", 100);

            (await v.IncrementLimitByMin("a", -10, 0)).Is(90);
            (await v.IncrementLimitByMin("a", -20, 0)).Is(70);
            (await v.IncrementLimitByMin("a", -30, 0)).Is(40);
            (await v.IncrementLimitByMin("a", -40, 0)).Is(0);
            (await v.IncrementLimitByMin("a", -50, 0)).Is(0);

            (await v.GetValue()).a.Is(0);
            (await v.GetField <int>("a")).Is(0);

            await v.SetField("b", 100.0);

            (await v.IncrementLimitByMin("b", -10.5, 0.5)).Is(89.5);
            (await v.IncrementLimitByMin("b", -20.5, 0.5)).Is(69);
            (await v.IncrementLimitByMin("b", -40.5, 0.5)).Is(28.5);
            (await v.IncrementLimitByMin("b", -40.5, 0.5)).Is(0.5);

            (await v.GetValue()).b.Is(0.5);
            (await v.GetField <double>("b")).Is(0.5);
        }
Exemple #2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string fsid   = Request["zheshiyige_FID"].ToString();
        long   delshu = 0;

        try
        {
            RedisClient RC     = RedisClass.GetRedisClient(null);
            string      hashid = "ZlistCache_" + fsid;
            delshu = RC.Del(hashid);
        }
        catch {
            Response.Write("缓存清理失败,无法访问缓存!");
            return;
        }

        //返回下载地址和状态""
        if (delshu > 0)
        {
            Response.Write("缓存清理完成,下次刷新将获得最新数据并重新建立缓存!");
        }
        else
        {
            Response.Write("缓存不存在,无需清理!");
        }
    }
Exemple #3
0
        public async Task ClassIncrMax()
        {
            var v = new RedisClass <MyClass>(settings, "test-hash");

            await v.SetField("a", 0);

            (await v.IncrementLimitByMax("a", 10, 100)).Is(10);
            (await v.IncrementLimitByMax("a", 20, 100)).Is(30);
            (await v.IncrementLimitByMax("a", 30, 100)).Is(60);
            (await v.IncrementLimitByMax("a", 40, 100)).Is(100);
            (await v.IncrementLimitByMax("a", 50, 100)).Is(100);

            (await v.GetValue()).a.Is(100);
            (await v.GetField <int>("a")).Is(100);

            await v.SetField("b", 0.0);

            (await v.IncrementLimitByMax("b", 10.5, 100)).Is(10.5);
            (await v.IncrementLimitByMax("b", 20.5, 100)).Is(31);
            (await v.IncrementLimitByMax("b", 40.5, 100)).Is(71.5);
            (await v.IncrementLimitByMax("b", 40.5, 100.1)).Is(100.1);

            (await v.GetValue()).b.Is(100.1);
            (await v.GetField <double>("b")).Is(100.1);
        }
Exemple #4
0
        private void gogo()
        {
            RedisClient newRC = RedisClass.GetRedisClient(null);

            lock (RedisClass.LockObj)
            {
                byte[] Buffer = newRC.Get("cc");
            }
        }
Exemple #5
0
        /// <summary>
        /// 开始处理,尝试更新缓存
        /// </summary>
        /// <param name="typeS">操作类型,包括“更新”、“插入”</param>
        /// <param name="P_cmd">原始带参数的sql语句</param>
        /// <param name="P_ht_in">原始传入的参数</param>
        /// <param name="tablename">被操作的表名</param>
        /// <param name="filed">被操作的字段和对应值</param>
        /// <param name="where">操作条件字段和对应值</param>
        /// <returns></returns>
        public string TryUpdateRedis(string typeS, string P_cmd, Hashtable P_ht_in, string tablename, Dictionary <string, string> filed, Dictionary <string, string> where)
        {
            //获得数据后,根据需要进行判断和处理。 注意。 字段名称一般不会有错误,但是对应值,不一定是期待的@dlyx这样的,也可能是“dj+1”这样的东西。 具体情况具体处理。


            RedisClient RC = RedisClass.GetRedisClient(null);

            RC.Add("aaaaaaaaaaaa", "bbbbbbbbbbb");

            return("ok");
        }
Exemple #6
0
        private void btnResetRedisPKid_Click(object sender, EventArgs e)
        {
            I_Dblink  I_DBL   = (new DBFactory()).DbLinkSqlMain("");
            Hashtable htInput = new Hashtable();

            htInput.Add("@date", null);
            Hashtable htres = I_DBL.RunProc_CMD("[dbo].[AAA_getTableMaxNum_redis]", "tab", htInput);
            DataSet   ds    = new DataSet();

            if ((bool)htres["return_float"])
            {
                ds = (DataSet)htres["return_ds"];
            }
            else
            {
                ds = null;
            }

            if (ds != null && ds.Tables.Contains("tab") && ds.Tables["tab"].Rows.Count > 0)
            {
                RedisClient RC  = RedisClass.GetRedisClient("OnlyOpenOneCheckRedis");
                string      txt = "TableName       MaxNum       MaxId" + Environment.NewLine + "-------------------------------------" + Environment.NewLine;

                //-------计算有效期截止时间---------------
                DateTime dateStart = DateTime.Now;
                //获取当月最后一天的时间
                DateTime dateEnd = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(1).AddDays(-1);
                //获取当前时间与当月最后一天相差的秒数作为键值的生命周期
                TimeSpan ts      = dateEnd.Subtract(dateStart).Duration();
                string   seconds = ts.TotalSeconds.ToString("0");

                using (IRedisTransaction IRT = RC.CreateTransaction())
                {//使用事务提交所有重置键值的操作语句
                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        txt += dr["tname"].ToString() + "       " + dr["maxnum"].ToString() + "       " + dr["maxid"].ToString() + Environment.NewLine;
                        string key = "str:TablePK:" + dr["tname"].ToString() + DateTime.Now.ToString("yyyyMM");
                        IRT.QueueCommand(r => r.Set(key, Convert.ToInt32(dr["maxid"].ToString())));
                        IRT.QueueCommand(r => r.ExpireEntryAt(key, dateEnd));
                    }
                    IRT.Commit(); // 提交事务
                }
                //将待处理的表信息显示在界面上
                richTextBox1.Text = txt;
            }
            else
            {
                richTextBox1.Text = "没有需要处理的信息!";
            }
        }
Exemple #7
0
        public async Task Class()
        {
            var klass = new RedisClass <MyClass>(GlobalSettings.Default, "class");
            await klass.Delete();

            await klass.Set(new MyClass { Foo = 1000, Bar = "hogehoge", Zoo = 300, Doo = 10.5 });

            var mc = await klass.Get();

            mc.Foo.Is(1000);
            mc.Bar.Is("hogehoge");

            (await klass.SetMember("Bar", "aiueo")).IsTrue();
            (await klass.GetMember(x => x.Bar)).Value.Is("aiueo");
            (await klass.SetMember(x => x.Foo, 10000)).IsTrue();
            (await klass.GetMember(x => x.Foo)).Value.Is(10000);
            (await klass.GetMember <int>("nai")).HasValue.IsFalse();

            var members = await klass.GetMembers(x => new[] { x.Foo, x.Zoo });

            members["Foo"].Is(10000);
            members["Zoo"].Is(300);

            await klass.SetMembers(new Dictionary <string, int>
            {
                { "Foo", 10 }, { "Zoo", 300 }
            });

            (await klass.GetMember(x => x.Foo)).Value.Is(10);
            (await klass.GetMember(x => x.Zoo)).Value.Is(300);

            await klass.SetMembers(x => new[] { x.Foo, x.Zoo }, new[] { 5000, 4000 });

            (await klass.GetMember(x => x.Foo)).Value.Is(5000);
            (await klass.GetMember(x => x.Zoo)).Value.Is(4000);

            (await klass.Increment("Foo", 100)).Is(5100);
            (await klass.Increment("Foo", 100)).Is(5200);
            (await klass.Increment("Foo", -100)).Is(5100);
            (await klass.GetMember <int>("Foo")).Value.Is(5100);
            (await klass.IncrementLimitByMax("Foo", 100, 5250)).Is(5200);
            (await klass.IncrementLimitByMax("Foo", 100, 5250)).Is(5250);
            (await klass.IncrementLimitByMin("Foo", -3000, 100)).Is(2250);
            (await klass.IncrementLimitByMin("Foo", -3000, 100)).Is(100);
            (await klass.Increment(x => x.Foo, 10)).Is(110);
            (await klass.Increment(x => x.Zooom, 10000)).Is(10000);
            (await klass.IncrementLimitByMax(x => x.Foo, 500, 140)).Is(140);
            (await klass.IncrementLimitByMin(x => x.Foo, -500, 30)).Is(30);

            (await klass.Increment("Doo", 20.1)).Is(30.6);
            (await klass.Increment("Doo", 20.1)).Is(50.7);
            Math.Round(await klass.Increment("Doo", -20.3), 1).Is(30.4);
            Math.Round((await klass.GetMember <double>("Doo")).Value, 1).Is(30.4);
            Math.Round((await klass.IncrementLimitByMax("Doo", 50.5, 102.4)), 1).Is(80.9);
            Math.Round((await klass.IncrementLimitByMax("Doo", 50.5, 102.3)), 1).Is(102.3);
            Math.Round((await klass.IncrementLimitByMin("Doo", -50.4, 30.3)), 1).Is(51.9);
            Math.Round((await klass.IncrementLimitByMin("Doo", -40.2, 30.3)), 1).Is(30.3);
            Math.Round((await klass.Increment(x => x.Doo, 20.1)), 1).Is(50.4);
            Math.Round((await klass.IncrementLimitByMax(x => x.Doo, 909.2, 88.8)), 1).Is(88.8);
            Math.Round((await klass.IncrementLimitByMin(x => x.Doo, -909.2, 40.4)), 1).Is(40.4);
        }
        public async Task Class()
        {
            var klass = new RedisClass<MyClass>(GlobalSettings.Default, "class");
            await klass.Delete();

            await klass.Set(new MyClass { Foo = 1000, Bar = "hogehoge", Zoo = 300, Doo = 10.5 });
            var mc = await klass.Get();
            mc.Foo.Is(1000);
            mc.Bar.Is("hogehoge");

            (await klass.SetMember("Bar", "aiueo")).IsTrue();
            (await klass.GetMember(x => x.Bar)).Value.Is("aiueo");
            (await klass.SetMember(x => x.Foo, 10000)).IsTrue();
            (await klass.GetMember(x => x.Foo)).Value.Is(10000);
            (await klass.GetMember<int>("nai")).HasValue.IsFalse();

            var members = await klass.GetMembers(x => new[] { x.Foo, x.Zoo });
            members["Foo"].Is(10000);
            members["Zoo"].Is(300);

            await klass.SetMembers(new Dictionary<string, int>
            {
                {"Foo", 10 }, {"Zoo", 300 }
            });
            (await klass.GetMember(x => x.Foo)).Value.Is(10);
            (await klass.GetMember(x => x.Zoo)).Value.Is(300);

            await klass.SetMembers(x => new[] { x.Foo, x.Zoo }, new[] { 5000, 4000 });
            (await klass.GetMember(x => x.Foo)).Value.Is(5000);
            (await klass.GetMember(x => x.Zoo)).Value.Is(4000);

            (await klass.Increment("Foo", 100)).Is(5100);
            (await klass.Increment("Foo", 100)).Is(5200);
            (await klass.Increment("Foo", -100)).Is(5100);
            (await klass.GetMember<int>("Foo")).Value.Is(5100);
            (await klass.IncrementLimitByMax("Foo", 100, 5250)).Is(5200);
            (await klass.IncrementLimitByMax("Foo", 100, 5250)).Is(5250);
            (await klass.IncrementLimitByMin("Foo", -3000, 100)).Is(2250);
            (await klass.IncrementLimitByMin("Foo", -3000, 100)).Is(100);
            (await klass.Increment(x => x.Foo, 10)).Is(110);
            (await klass.Increment(x => x.Zooom, 10000)).Is(10000);
            (await klass.IncrementLimitByMax(x => x.Foo, 500, 140)).Is(140);
            (await klass.IncrementLimitByMin(x => x.Foo, -500, 30)).Is(30);

            (await klass.Increment("Doo", 20.1)).Is(30.6);
            (await klass.Increment("Doo", 20.1)).Is(50.7);
            Math.Round(await klass.Increment("Doo", -20.3), 1).Is(30.4);
            Math.Round((await klass.GetMember<double>("Doo")).Value, 1).Is(30.4);
            Math.Round((await klass.IncrementLimitByMax("Doo", 50.5, 102.4)), 1).Is(80.9);
            Math.Round((await klass.IncrementLimitByMax("Doo", 50.5, 102.3)), 1).Is(102.3);
            Math.Round((await klass.IncrementLimitByMin("Doo", -50.4, 30.3)), 1).Is(51.9);
            Math.Round((await klass.IncrementLimitByMin("Doo", -40.2, 30.3)), 1).Is(30.3);
            Math.Round((await klass.Increment(x => x.Doo, 20.1)), 1).Is(50.4);
            Math.Round((await klass.IncrementLimitByMax(x => x.Doo, 909.2, 88.8)), 1).Is(88.8);
            Math.Round((await klass.IncrementLimitByMin(x => x.Doo, -909.2, 40.4)), 1).Is(40.4);
        }
Exemple #9
0
        public async Task ClassDecrMin()
        {
            var v = new RedisClass<MyClass>(settings, "test-hash");

            await v.SetField("a", 100);
            (await v.IncrementLimitByMin("a", -10, 0)).Is(90);
            (await v.IncrementLimitByMin("a", -20, 0)).Is(70);
            (await v.IncrementLimitByMin("a", -30, 0)).Is(40);
            (await v.IncrementLimitByMin("a", -40, 0)).Is(0);
            (await v.IncrementLimitByMin("a", -50, 0)).Is(0);

            (await v.GetValue()).a.Is(0);
            (await v.GetField<int>("a")).Is(0);

            await v.SetField("b", 100.0);
            (await v.IncrementLimitByMin("b", -10.5, 0.5)).Is(89.5);
            (await v.IncrementLimitByMin("b", -20.5, 0.5)).Is(69);
            (await v.IncrementLimitByMin("b", -40.5, 0.5)).Is(28.5);
            (await v.IncrementLimitByMin("b", -40.5, 0.5)).Is(0.5);

            (await v.GetValue()).b.Is(0.5);
            (await v.GetField<double>("b")).Is(0.5);
        }
Exemple #10
0
        public async Task ClassIncrMax()
        {
            var v = new RedisClass<MyClass>(settings, "test-hash");

            await v.SetField("a", 0);
            (await v.IncrementLimitByMax("a", 10, 100)).Is(10);
            (await v.IncrementLimitByMax("a", 20, 100)).Is(30);
            (await v.IncrementLimitByMax("a", 30, 100)).Is(60);
            (await v.IncrementLimitByMax("a", 40, 100)).Is(100);
            (await v.IncrementLimitByMax("a", 50, 100)).Is(100);

            (await v.GetValue()).a.Is(100);
            (await v.GetField<int>("a")).Is(100);

            await v.SetField("b", 0.0);
            (await v.IncrementLimitByMax("b", 10.5, 100)).Is(10.5);
            (await v.IncrementLimitByMax("b", 20.5, 100)).Is(31);
            (await v.IncrementLimitByMax("b", 40.5, 100)).Is(71.5);
            (await v.IncrementLimitByMax("b", 40.5, 100.1)).Is(100.1);
            
            (await v.GetValue()).b.Is(100.1);
            (await v.GetField<double>("b")).Is(100.1);
        }
Exemple #11
0
        private void gogo()
        {
            RedisClient newRC = RedisClass.GetRedisClient(null);

            byte[] Buffer = newRC.Get("cc");
        }
        public void SetAndGetComplexClass()
        {
            var redisClass = new RedisClass<PersonWithAddress>(RedisServer.Default, HashKey0);
            var person = new PersonWithAddress
            {
                Name = "Matt",
                Age = 51,
                Address = new Address
                {
                    Line1 = "1234 Anywhere Street",
                    Line2 = "",
                    City = "Anywhere",
                    State = "WA",
                    Zip = "12345"
                }
            };

            var result = Task.Run(async () => { return await redisClass.Set(person); });
            var resultBool = result.Result;

            Assert.IsTrue(resultBool);

            var copy = Task.Run(async () => { return await redisClass.Get().ConfigureAwait(false); });

            var copyResult = copy.Result;

            Assert.AreEqual(person, copyResult);
        }
        public void SetAndGetClass()
        {
            var redisClass = new RedisClass<Person>(RedisServer.Default, HashKey0);
            var person = new Person { Name = "Tom" };

            var result = Task.Run(async () => { return await redisClass.Set(person); });
            var resultBool = result.Result;

            Assert.IsTrue(resultBool);

            var copy = Task.Run(async () => { return await redisClass.Get().ConfigureAwait(false); });

            var copyResult = copy.Result;

            Assert.AreEqual(person, copyResult);
            Assert.AreEqual(person.Name, copyResult.Name);
            Assert.AreEqual(person.Age, copyResult.Age);
        }