public static void Run() { int totalCallbacks = 0; var cacheClient = new CacheClient(); // 502 chars = 1 kb string value = "asdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasas"; int itemsToAdd = 1000; Console.WriteLine("***** BEGIN REMOVED ITEM CALLBACK TEST *****"); Console.WriteLine(); cacheClient.HostDisconnected += (sender, e) => { Console.WriteLine("*** Host disconnected"); }; cacheClient.HostReconnected += (sender, e) => { Console.WriteLine("*** Host reconnected"); }; cacheClient.CacheItemExpired += (sender, e) => { Interlocked.Increment(ref totalCallbacks); Console.WriteLine(string.Format("Cache key expired: {1}, Total Removed: {1}", e.CacheKey, totalCallbacks)); }; // Add items for (int i = 0; i < itemsToAdd; i++) { cacheClient.AddOrUpdate("test" + i, value, notifyRemoved: true); } Console.WriteLine("***** " + itemsToAdd + " ITEMS ADDED *****"); Console.WriteLine("***** BEGIN REMOVING " + itemsToAdd + " ITEMS AFTER 2000 MS PAUSE *****"); Thread.Sleep(2000); // Remove items for (int i = 0; i < itemsToAdd; i++) { cacheClient.Remove("test" + i); } Console.ReadKey(); }
public static void Run() { var cacheClient = new CacheClient(); // 502 chars = 1 kb string value = "asdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasas"; Console.WriteLine("***** BEGIN INFINITE ADD TEST (WILL NEVER END) *****"); Console.WriteLine(); cacheClient.HostDisconnected += (sender, e) => { Console.WriteLine("*** Host disconnected"); }; cacheClient.HostReconnected += (sender, e) => { Console.WriteLine("*** Host reconnected"); }; // Add test1 to test1000 int i = 1; while (true) { cacheClient.AddOrUpdate("test" + i, value); i++; if (i == 1001) { i = 1; } } }
public static void Run() { var cacheClient = new CacheClient(); // 502 chars = 1 kb string value = "asdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasas"; int itemsToAdd = 1000; Console.WriteLine("***** BEGIN INFINITE ADD " + itemsToAdd + " ITEMS TEST (WILL NEVER END) *****"); Console.WriteLine(); cacheClient.HostDisconnected += (sender, e) => { Console.WriteLine("*** Host disconnected"); }; cacheClient.HostReconnected += (sender, e) => { Console.WriteLine("*** Host reconnected"); }; // Add items int i = 0; while (true) { cacheClient.AddOrUpdate("test" + i, value); i++; if (i == itemsToAdd) { i = 0; } } }
public static void Run() { var cacheClient = new CacheClient(); // 502 chars = ~1 kb string value = "asdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasas"; int itemsToAdd = 1000; Console.WriteLine("***** BEGIN INFINITE ADD " + itemsToAdd + " 1 KB STRING OBJECTS TEST (WILL NEVER END) *****"); Console.WriteLine(); cacheClient.HostDisconnected += (sender, e) => { Console.WriteLine("*** Host disconnected"); }; cacheClient.HostReconnected += (sender, e) => { Console.WriteLine("*** Host reconnected"); }; // Add items var cts = new CancellationTokenSource(); Task.Factory.StartNew(() => { int i = 0; while (!cts.Token.IsCancellationRequested) { try { cacheClient.AddOrUpdate(string.Intern("test" + i), value); } catch (NoCacheHostsAvailableException) { Thread.Sleep(1000); continue; } i = ++i % itemsToAdd; if (i == 0) { Thread.Sleep(1); } } }, cts.Token); var key = Console.ReadKey(); // Graceful shutdown option if (key.KeyChar == 'q') { cts.Cancel(); cacheClient.Shutdown(); } }
public DacheCacheProvider() { List <CacheEntry> relationships = null; if (!_client.TryGet <List <CacheEntry> >(_entitySetRelationsKey, out relationships)) { relationships = new List <CacheEntry>(); _client.AddOrUpdate(_entitySetRelationsKey, relationships); } }
public virtual void Set(string key, object data, DateTimeOffset?absoluteExpiration = null) { if (string.IsNullOrEmpty(key)) { throw new ArgumentNullException("key"); } if (data == null) { return; } if (IsSet(key)) { Remove(key); } _cache.AddOrUpdate(key, data, absoluteExpiration: absoluteExpiration); }
public static void Run() { var cacheClient = new CacheClient(); // 502 chars = ~1 kb string value = "asdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasas"; int itemsToAdd = 1000; Console.WriteLine("***** BEGIN INFINITE ADD " + itemsToAdd + " 1 KB STRING OBJECTS TEST (WILL NEVER END) *****"); Console.WriteLine(); cacheClient.HostDisconnected += (sender, e) => { Console.WriteLine("*** Host disconnected"); }; cacheClient.HostReconnected += (sender, e) => { Console.WriteLine("*** Host reconnected"); }; // Add items Task.Factory.StartNew(() => { int i = 0; while (true) { try { cacheClient.AddOrUpdate("test" + i, value); } catch (NoCacheHostsAvailableException) { Thread.Sleep(1000); continue; } i++; if (i == itemsToAdd) { i = 0; } } }); var key = Console.ReadKey(); // Graceful shutdown option if (key.KeyChar == 'q') { cacheClient.Shutdown(); } }
public static void Run() { int totalCallbacks = 0; var cacheClient = new CacheClient(); // 502 chars = ~1 kb string value = "asdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasas"; int itemsToAdd = 10; var pause = 2000; Console.WriteLine("***** BEGIN REMOVED ITEM CALLBACK TEST *****"); Console.WriteLine(); cacheClient.HostDisconnected += (sender, e) => { Console.WriteLine("*** Host disconnected"); }; cacheClient.HostReconnected += (sender, e) => { Console.WriteLine("*** Host reconnected"); }; cacheClient.CacheItemExpired += (sender, e) => { Interlocked.Increment(ref totalCallbacks); Console.WriteLine(string.Format("Cache key expired: {0}, Total Removed: {1}", e.CacheKey, totalCallbacks)); }; // Add items for (int i = 1; i <= itemsToAdd; i++) { cacheClient.AddOrUpdate("test" + i, value, notifyRemoved: true); } Console.WriteLine("***** " + itemsToAdd + " ITEMS ADDED *****"); Console.WriteLine("***** BEGIN REMOVING " + itemsToAdd + " ITEMS AFTER " + pause + " MS PAUSE *****"); Thread.Sleep(pause); // Remove items for (int i = 1; i <= itemsToAdd; i++) { cacheClient.Remove("test" + i); } var key = Console.ReadKey(); // Graceful shutdown option if (key.KeyChar == 'q') { cacheClient.Shutdown(); } }
/// <summary> /// Adds or updates an item in the cache. /// </summary> /// <param name="key">The cache key.</param> /// <param name="value">The object to add to the cache.</param> public void AddOrUpdate(string key, object value) { _cacheClient.AddOrUpdate(key, value); }
public static void Run() { var cacheClient = new CacheClient(); var stopwatch = new Stopwatch(); var overallStopwatch = new Stopwatch(); overallStopwatch.Start(); // 502 chars = ~1 kb const string value = "asdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasas"; CustomObject myObject = new CustomObject(); Console.WriteLine("***** BEGIN ADD 10000 TESTS *****"); Console.WriteLine(); #region Regular Add 10000 strings stopwatch.Start(); for (int i = 1; i <= 10000; i++) { cacheClient.AddOrUpdate("test" + i, value); } stopwatch.Stop(); Console.WriteLine("Add time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion #region Bulk Add 10000 strings var list = new List <KeyValuePair <string, object> >(10000); for (int i = 1; i <= 10000; i++) { list.Add(new KeyValuePair <string, object>("bulktest" + i, value)); } stopwatch.Restart(); cacheClient.AddOrUpdate(list); stopwatch.Stop(); Console.WriteLine("Add Many time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion #region Tagged Add 10000 strings stopwatch.Restart(); for (int i = 1; i <= 10000; i++) { cacheClient.AddOrUpdate("tagtest" + i, value, tagName: "demotag"); } stopwatch.Stop(); Console.WriteLine("Add Tagged time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion Console.WriteLine(); Console.WriteLine("***** BEGIN SINGLE KEY GET TEST *****"); Console.WriteLine(); #region Regular Get 1 string proof string resultString = null; stopwatch.Restart(); var result = cacheClient.TryGet("test5", out resultString) && string.Equals(resultString, value); stopwatch.Stop(); Console.WriteLine("Get cache key \"test5\": time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); Console.WriteLine("Get cache key \"test5\": successful = " + result); Console.WriteLine("Get cache key \"test5\": result length: " + (resultString == null ? 0 : resultString.Length) + ", original length: " + value.Length); if (resultString != null) { var origHash = value.GetHashCode(); var resultHash = resultString.GetHashCode(); Console.WriteLine("Original String Hash Code: " + origHash + ", Result String Hash Code: " + resultHash); } #endregion Console.WriteLine(); Console.WriteLine("***** BEGIN GET 10000 TESTS *****"); Console.WriteLine(); string otherValue = null; #region Regular Get 10000 strings stopwatch.Restart(); var failedKeyCount = 0; for (int i = 1; i <= 10000; i++) { if (!cacheClient.TryGet("test" + i, out otherValue)) { failedKeyCount++; } } stopwatch.Stop(); Console.WriteLine("Failed Key Count: " + failedKeyCount + (failedKeyCount > 0 ? ", NOTE: network is probably slow" : "")); Console.WriteLine("Get time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion #region Bulk Get 10000 strings var list2 = new List <string>(10000); for (int i = 1; i <= 10000; i++) { list2.Add("bulktest" + i); } stopwatch.Restart(); var getManyResults = cacheClient.Get <string>(list2); stopwatch.Stop(); Console.WriteLine("Get Many time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); var getManyResultsCount = getManyResults != null ? getManyResults.Count : 0; Console.WriteLine("Get Many object count: " + getManyResultsCount + (getManyResultsCount < 10000 ? ", NOTE: network is probably slow" : "")); #endregion #region Tagged Get 10000 strings stopwatch.Restart(); var getTaggedResults = cacheClient.GetTagged <string>("demotag"); stopwatch.Stop(); Console.WriteLine("Get Tagged time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); getManyResultsCount = getManyResults != null ? getManyResults.Count : 0; Console.WriteLine("Get Tagged object count: " + getManyResultsCount + (getManyResultsCount < 10000 ? ", NOTE: network is probably slow" : "")); #endregion Console.WriteLine(); Console.WriteLine("***** BEGIN REMOVE 10000 TESTS *****"); Console.WriteLine(); #region Regular Remove 10000 strings stopwatch.Restart(); for (int i = 1; i <= 10000; i++) { cacheClient.Remove("test" + i); } stopwatch.Stop(); Console.WriteLine("Remove time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion #region Bulk Remove 10000 strings stopwatch.Restart(); cacheClient.Remove(list2); stopwatch.Stop(); Console.WriteLine("Remove Many time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion #region Tagged Remove 10000 strings stopwatch.Restart(); cacheClient.RemoveTagged("demotag"); stopwatch.Stop(); Console.WriteLine("Remove Tagged time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion Console.WriteLine(); Console.WriteLine("***** BEGIN ABSOLUTE EXPIRATION TEST *****"); Console.WriteLine(); #region Regular Add 10000 strings with absolute expiration var absoluteExpiration = DateTime.Now.AddMinutes(1); stopwatch.Restart(); for (int i = 1; i <= 10000; i++) { cacheClient.AddOrUpdate("testabsolute" + i, value, absoluteExpiration: absoluteExpiration); } stopwatch.Stop(); Console.WriteLine("Add absolute expiration time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion Console.WriteLine(); Console.WriteLine("***** BEGIN 10000 COMPLEX OBJECT ADD TEST *****"); Console.WriteLine(); #region Regular Add 10000 complex objects with sliding expiration var slidingExpiration = new TimeSpan(0, 2, 0); stopwatch.Restart(); for (int i = 1; i <= 10000; i++) { cacheClient.AddOrUpdate("testabsolutecomplex" + i, myObject, slidingExpiration: slidingExpiration); } stopwatch.Stop(); Console.WriteLine("Add complex object time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion Console.WriteLine(); Console.WriteLine("***** BEGIN 10000 COMPLEX OBJECT GET TEST *****"); Console.WriteLine(); #region Regular Get 10000 complex objects with sliding expiration stopwatch.Restart(); failedKeyCount = 0; for (int i = 1; i <= 10000; i++) { if (!cacheClient.TryGet("testabsolutecomplex" + i, out myObject)) { failedKeyCount++; } } stopwatch.Stop(); Console.WriteLine("Failed Key Count: " + failedKeyCount + (failedKeyCount > 0 ? ", NOTE: network is probably slow" : "")); Console.WriteLine("Get complex object time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion overallStopwatch.Stop(); Console.WriteLine(); Console.WriteLine("***** END TESTS *****"); Console.WriteLine(); Console.WriteLine("Total time taken: " + overallStopwatch.ElapsedMilliseconds + " ms, " + overallStopwatch.ElapsedTicks + " ticks"); var key = Console.ReadKey(); // Graceful shutdown option if (key.KeyChar == 'q') { cacheClient.Shutdown(); } }
public static void Run() { var cacheClient = new CacheClient(); var stopwatch = new Stopwatch(); var overallStopwatch = new Stopwatch(); overallStopwatch.Start(); // 502 chars = ~1 kb const string value = "asdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasasdfasdfasas"; CustomObject myObject = new CustomObject(); Console.WriteLine("***** BEGIN ADD 10000 TESTS *****"); Console.WriteLine(); #region Regular Add 10000 strings stopwatch.Start(); for (int i = 1; i <= 10000; i++) { cacheClient.AddOrUpdate("test" + i, value); } stopwatch.Stop(); Console.WriteLine("Add time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion #region Bulk Add 10000 strings var list = new List<KeyValuePair<string, object>>(10000); for (int i = 1; i <= 10000; i++) { list.Add(new KeyValuePair<string, object>("bulktest" + i, value)); } stopwatch.Restart(); cacheClient.AddOrUpdate(list); stopwatch.Stop(); Console.WriteLine("Add Many time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion #region Tagged Add 10000 strings stopwatch.Restart(); for (int i = 1; i <= 10000; i++) { cacheClient.AddOrUpdate("tagtest" + i, value, tagName: "demotag"); } stopwatch.Stop(); Console.WriteLine("Add Tagged time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion Console.WriteLine(); Console.WriteLine("***** BEGIN SINGLE KEY GET TEST *****"); Console.WriteLine(); #region Regular Get 1 string proof string resultString = null; stopwatch.Restart(); var result = cacheClient.TryGet("test5", out resultString) && string.Equals(resultString, value); stopwatch.Stop(); Console.WriteLine("Get cache key \"test5\": time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); Console.WriteLine("Get cache key \"test5\": successful = " + result); Console.WriteLine("Get cache key \"test5\": result length: " + (resultString == null ? 0 : resultString.Length) + ", original length: " + value.Length); if (resultString != null) { var origHash = value.GetHashCode(); var resultHash = resultString.GetHashCode(); Console.WriteLine("Original String Hash Code: " + origHash + ", Result String Hash Code: " + resultHash); } #endregion Console.WriteLine(); Console.WriteLine("***** BEGIN GET 10000 TESTS *****"); Console.WriteLine(); string otherValue = null; #region Regular Get 10000 strings stopwatch.Restart(); for (int i = 1; i <= 10000; i++) { if (!cacheClient.TryGet("test" + i, out otherValue)) { Console.WriteLine("Get failed for cache key: " + "test" + i); } } stopwatch.Stop(); Console.WriteLine("Get time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion #region Bulk Get 10000 strings var list2 = new List<string>(10000); for (int i = 1; i <= 10000; i++) { list2.Add("bulktest" + i); } stopwatch.Restart(); var getManyResults = cacheClient.Get<string>(list2); stopwatch.Stop(); Console.WriteLine("Get Many time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); Console.WriteLine("Get Many object count: " + getManyResults.Count); #endregion #region Tagged Get 10000 strings stopwatch.Restart(); var getTaggedResults = cacheClient.GetTagged<string>("demotag"); stopwatch.Stop(); Console.WriteLine("Get Tagged time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); Console.WriteLine("Get Tagged object count: " + getManyResults.Count); #endregion Console.WriteLine(); Console.WriteLine("***** BEGIN REMOVE 10000 TESTS *****"); Console.WriteLine(); #region Regular Remove 10000 strings stopwatch.Restart(); for (int i = 1; i <= 10000; i++) { cacheClient.Remove("test" + i); } stopwatch.Stop(); Console.WriteLine("Remove time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion #region Bulk Remove 10000 strings stopwatch.Restart(); cacheClient.Remove(list2); stopwatch.Stop(); Console.WriteLine("Remove Many time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion #region Tagged Remove 10000 strings stopwatch.Restart(); cacheClient.RemoveTagged("demotag"); stopwatch.Stop(); Console.WriteLine("Remove Tagged time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion Console.WriteLine(); Console.WriteLine("***** BEGIN ABSOLUTE EXPIRATION TEST *****"); Console.WriteLine(); #region Regular Add 10000 strings with absolute expiration var absoluteExpiration = DateTime.Now.AddMinutes(1); stopwatch.Restart(); for (int i = 1; i <= 10000; i++) { cacheClient.AddOrUpdate("testabsolute" + i, value, absoluteExpiration: absoluteExpiration); } stopwatch.Stop(); Console.WriteLine("Add absolute expiration time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion Console.WriteLine(); Console.WriteLine("***** BEGIN 10000 COMPLEX OBJECT ADD TEST *****"); Console.WriteLine(); #region Regular Add 10000 complex objects with sliding expiration var slidingExpiration = new TimeSpan(0, 2, 0); stopwatch.Restart(); for (int i = 1; i <= 10000; i++) { cacheClient.AddOrUpdate("testabsolutecomplex" + i, myObject, slidingExpiration: slidingExpiration); } stopwatch.Stop(); Console.WriteLine("Add complex object time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion Console.WriteLine(); Console.WriteLine("***** BEGIN 10000 COMPLEX OBJECT GET TEST *****"); Console.WriteLine(); #region Regular Get 10000 complex objects with sliding expiration stopwatch.Restart(); for (int i = 1; i <= 10000; i++) { cacheClient.TryGet("testabsolutecomplex" + i, out myObject); } stopwatch.Stop(); Console.WriteLine("Get complex object time taken: " + stopwatch.ElapsedMilliseconds + " ms, " + stopwatch.ElapsedTicks + " ticks"); #endregion overallStopwatch.Stop(); Console.WriteLine(); Console.WriteLine("***** END TESTS *****"); Console.WriteLine(); Console.WriteLine("Total time taken: " + overallStopwatch.ElapsedMilliseconds + " ms, " + overallStopwatch.ElapsedTicks + " ticks"); var key = Console.ReadKey(); // Graceful shutdown option if (key.KeyChar == 'q') { cacheClient.Shutdown(); } }