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 static WebApplication Run(string[] args, StacheMeister _meister) { StacheMeister meister = _meister ?? throw new ArgumentNullException(nameof(meister)); var builder = Microsoft.AspNetCore.Builder.WebApplication.CreateBuilder(args); builder.Services.AddSingleton <StacheMeister>(s => meister); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Services.AddCors(); var app = builder.Build(); app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()); if (app.Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.MapGet("/stash/{key}", async(HttpContext http, [FromServices] StacheMeister meister, string key) => { if (!http.Request.RouteValues.TryGetValue("Key", out var _key)) { http.Response.StatusCode = 400; return; } string result = JsonConvert.SerializeObject(meister ![key !]);
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); }