public void Performance_SADD() { string[] s = Enumerable.Range(1, 1000 * 1000).Select(i => Guid.NewGuid().ToString()).ToArray(); Debug.WriteLine("Source array size: " + Utility.U.ObjectSize(s)); PooledRedisClientManager prcm = new PooledRedisClientManager(); IRedisClient cli = prcm.GetClient(); cli.ConnectTimeout = 1000; cli.Delete("tests-sadd"); var set = cli.Sets["tests-sadd"]; int adds = 0; using (var c = new Utility.U.Chrono("SADD " + s.Length)) { foreach (var i in s) { set.Add(i); adds++; } } }
public override void SetAndReleaseItemExclusive(HttpContext context, string id, SessionStateStoreData item, object lockId, bool newItem) { // Serialize the SessionStateItemCollection as a string. string sessionItems = this.Serialize((SessionStateItemCollection)item.Items); using (IRedisClient redisClient = this.CreateRedisClient()) { try { if (newItem) { SessionItem currentSessionItem = redisClient.Get <SessionItem>(this.GetRedisKey(id)); if (currentSessionItem != null && currentSessionItem.Expires < DateTime.Now) { redisClient.Delete <SessionItem>(currentSessionItem); } SessionItem sessionItem = new SessionItem() { SessionId = id, ApplicationName = this.ApplicationName, CreatedAt = DateTime.Now, Expires = DateTime.Now.AddMinutes((Double)item.Timeout), Timeout = item.Timeout, LockId = 0, LockDate = DateTime.Now, Locked = false, SessionItems = sessionItems, Flags = 0 }; redisClient.Set <SessionItem>(this.GetRedisKey(id), sessionItem, DateTime.Now.AddMinutes(item.Timeout)); } else { SessionItem currentSessionItem = redisClient.Get <SessionItem>(this.GetRedisKey(id)); if (currentSessionItem != null && currentSessionItem.LockId == (int?)lockId) { currentSessionItem.Locked = false; currentSessionItem.SessionItems = sessionItems; redisClient.Set <SessionItem>(this.GetRedisKey(id), currentSessionItem, DateTime.UtcNow.AddMinutes(item.Timeout)); } } } catch (Exception e) { throw e; } } }
public object GetCache(string key) { var result = redisClient.Get <CacheModel>(key); if (result == null) { return(null); } if (result.ExpiryDate < DateTime.Now) { Task.Run(() => { redisClient.Delete(result); }); return(null); } return(result.Value); }