public override void CreateUninitializedItem(HttpContext context, string id, int timeout)
        {
            RedisSessionState state = new RedisSessionState(null, null, timeout);

            RedisBase.Item_Set <string>(id, state.ToJson());
            RedisBase.ExpireEntryAt(id, DateTime.Now.AddMinutes(timeout.TryToDouble()));
        }
        private SessionStateStoreData DoGet(HttpContext context, string id, bool exclusive, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actionFlags)
        {
            locked      = false;
            lockId      = null;
            lockAge     = TimeSpan.Zero;
            actionFlags = SessionStateActions.None;
            RedisSessionState state = RedisSessionState.FromJson(RedisBase.Item_Get <string>(id));

            if (state == null)
            {
                return(null);
            }
            RedisBase.ExpireEntryAt(id, DateTime.Now.AddMinutes(state._timeout.TryToDouble()));
            return(CreateLegitStoreData(context, state._sessionItems, state._staticObjects, state._timeout));
        }
        public override void SetAndReleaseItemExclusive(HttpContext context, string id, SessionStateStoreData item, object lockId, bool newItem)
        {
            ISessionStateItemCollection sessionItems  = null;
            HttpStaticObjectsCollection staticObjects = null;

            if (item.Items.Count > 0)
            {
                sessionItems = item.Items;
            }
            if (!item.StaticObjects.NeverAccessed)
            {
                staticObjects = item.StaticObjects;
            }

            RedisSessionState state2 = new RedisSessionState(sessionItems, staticObjects, item.Timeout);

            RedisBase.Item_Set(id, state2.ToJson());
            RedisBase.ExpireEntryAt(id, DateTime.Now.AddMinutes(item.Timeout.TryToDouble()));
        }