Exemple #1
0
        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++;
                }
            }
        }
Exemple #2
0
        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;
                }
            }
        }
Exemple #3
0
        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);
        }