public App() { InitializeComponent(); StacheMeister Meister = new StacheMeister("memstache.demo", null, null, StashPlan.spSerializeCompress); string key = "app01_Test"; string value = Meister[key]; //app just started, so fetching value from db cache, not memory //int rowcount; if (value != null) { //rowcount = Meister.DB.Delete<Stash>(key); //delete the record StashRepo.Delete(key); } Meister[key] = "This is a Test"; //Assign value to MemStache value = Meister[key]; //will find value in memory cache, no need to check db cache //Now let's cache an Object Person user = new Person() { Name = "Dennis", Age = 44 }; key = "App.User.Name"; Meister[key] = user; //assign object to cache Person user2 = Meister[key] as Person; //the retrieved object is automatically deserialized. MainPage = new MainPage(); }
public Stasher( string purpose, StashPlan plan, StashRepo db, IDataProtector dataProtector, IMemoryCache cache, MemoryCacheEntryOptions memoryItemOptions = null) { this.DB = db; this.Cache = cache; this.DataProtector = dataProtector; this.Purpose = purpose; this.Plan = plan; // If developer chooses to instantiate standalone Stasher then we will need to deal with // memItemOptions directly if (memoryItemOptions == null) { this.MemoryItemOptions = new MemoryCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromDays(1), Size = 921600, // bytes = 900 kb Priority = CacheItemPriority.High, }; } else { if (memoryItemOptions.Size == null) { memoryItemOptions.Size = 921600; } this.MemoryItemOptions = memoryItemOptions; } }
public void _0_TestStasher() { string key = "test01"; StacheMeister meister = new StacheMeister("memstache.demo"); // var rowcount = Meister.DB.Delete<Stash>(key); StashRepo.Delete(key); Stasher stash = meister.MakeStasher("test", StashPlan.spSerialize); Console.WriteLine("MemStache Initialized: {0}", stash.Purpose); var payload = new Stash() { Key = key, Object = "This is a test" }; var hash1 = Stasher.Hash(payload.Value); stash[key] = payload; payload.Value = string.Empty; payload = stash[key]; Console.WriteLine("Payload Test: {0}", payload.Value); var hash2 = Stasher.Hash(payload.Value); Assert.AreEqual(hash1, hash2); }
public void _0_TestDBInsert_2() { #pragma warning disable CS0219 // Variable is assigned but its value is never used string appId, filename, password; #pragma warning restore CS0219 // Variable is assigned but its value is never used appId = "memstache.demo"; filename = "MemstacheTest.cv"; password = "******"; string key = "test02"; StacheMeister meister = new StacheMeister("memstache.demo"); //StacheMeister meister = new StacheMeister(appId, filename, password); // var rowcount = Meister.DB.Delete<Stash>(key); StashRepo.Delete(key); Stasher stash = meister.MakeStasher("test", StashPlan.spSerialize); string s = "another test"; s = JsonConvert.SerializeObject(s); stash.DbAddOrUpdate(new Stash() { Key = key, Value = s, Serialized = true }); // stash.DB.Insert(new Stash() { key = key, value = s, serialized=true }); Task.Delay(1000); Stash result = stash.DbGet(key); Console.WriteLine("Payload Test: {0}", result.Value); }
public void _6_StacheMeisterSerializeAndCompressAndEncrypt() { string key = "test08"; StacheMeister meister = new StacheMeister("memstache.demo", null, null, StashPlan.spProtectCompress); // var rowcount = Meister.DB.Delete<Stash>(key); StashRepo.Delete(key); Employee emp1 = employee1; // CreateEmployee(); string v1 = JsonConvert.SerializeObject(emp1); meister[key] = emp1; Employee emp2 = meister[key] as Employee; string v2 = JsonConvert.SerializeObject(emp2); Assert.AreEqual(v1, v2); }
public void _4_StacheMeisterSerialization() { string key = "test06"; StacheMeister meister = new StacheMeister("memstache.demo"); // var rowcount = Meister.DB.Delete<Stash>(key); StashRepo.Delete(key); Employee emp1 = employee1; // CreateEmployee(); string v1 = JsonConvert.SerializeObject(emp1); meister[key] = emp1; Employee emp2 = meister[key] as Employee; string v2 = JsonConvert.SerializeObject(emp2); Assert.AreEqual(v1, v2); }
public void _0_InsertAndRetrieve() { #pragma warning disable CS0219 // Variable is assigned but its value is never used string appId, filename, password; #pragma warning restore CS0219 // Variable is assigned but its value is never used appId = "memstache.demo"; filename = "MemstacheTest.cv"; password = "******"; string key = "test02"; StacheMeister meister = new StacheMeister("memstache.demo"); //StacheMeister meister = new StacheMeister(appId, filename, password, StashPlan.spProtectCompress); // var rowcount = Meister.DB.Delete<Stash>(key); StashRepo.Delete(key); meister[key] = "testing01"; // stash.DB.Insert(new Stash() { key = key, value = s, serialized=true }); Task.Delay(1).Wait(); string result = meister[key]; if (result != null) { Console.WriteLine("1st Payload Test: {0}", result); // result.Id.ToString()); } meister[key] = "testing02"; Task.Delay(1).Wait(); result = meister[key]; if (result != null) { Console.WriteLine("2nd Payload Test: {0}", result); // result.Id.ToString()); } meister[key] = "testing03"; Task.Delay(1).Wait(); result = meister[key]; if (result != null) { Console.WriteLine("3rd Payload Test: {0}", result); // result.Id.ToString()); } }
public void _3_StasherSerializeAndCompressAndEncrypt() { string key = "test05"; StacheMeister meister = new StacheMeister("memstache.demo"); // var rowcount = Meister.DB.Delete<Stash>(key); StashRepo.Delete(key); Stasher stash = meister.MakeStasher("test", StashPlan.spProtectCompress); Console.WriteLine("MemStache Initialized: {0}", stash.Purpose); Valuation valuation1 = new Valuation(); var payload = new Stash() { Key = key, StashPlan = StashPlan.spProtectCompress, Object = valuation1 }; var typeName = payload.StoredType; var hash1 = Stasher.Hash(payload.Value); stash[key] = payload; // payload.value = ""; if (payload == null) { Console.WriteLine("Payload is nulls"); } payload = stash[key]; Valuation valuation2 = payload.Object as Valuation; Console.WriteLine("Payload Test: {0}", payload.Value); var hash2 = Stasher.Hash(payload.Value); Assert.AreEqual(hash1, hash2); }
public void _0_TestDBInsert() { string key = "test02"; StacheMeister meister = new StacheMeister("memstache.demo"); // var rowcount = Meister.DB.Delete<Stash>(key); StashRepo.Delete(key); Stasher stash = meister.MakeStasher("test", StashPlan.spSerialize); string s = "another test"; s = JsonConvert.SerializeObject(s); stash.DbAddOrUpdate(new Stash() { Key = key, Value = s, Serialized = true }); // stash.DB.Insert(new Stash() { key = key, value = s, serialized=true }); Task.Delay(1000); Stash result = stash.DbGet(key); Console.WriteLine("Payload Test: {0}", result.Value); }