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); }
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("缓存不存在,无需清理!"); } }
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); }
private void gogo() { RedisClient newRC = RedisClass.GetRedisClient(null); lock (RedisClass.LockObj) { byte[] Buffer = newRC.Get("cc"); } }
/// <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"); }
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 = "没有需要处理的信息!"; } }
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); }
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); }
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); }
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); }