public bool Exist(string key)
        {
            if (string.IsNullOrWhiteSpace(key))
            {
                throw new ArgumentException("Parameter is invalid.", "key", null);
            }

            RedisDal dal = new RedisDal();

            return(dal.ItemExist(key));
        }
        public long Add <T>(string key, T value, TimeSpan slidingExpiration, TimeSpan absoluteExpiration, bool forceOverWrite)
        {
            if (string.IsNullOrWhiteSpace(key))
            {
                throw new ArgumentException("Parameter is invalid.", "key", null);
            }
            if ((slidingExpiration != Utility.NO_EXPIRATION && absoluteExpiration != Utility.NO_EXPIRATION) && (slidingExpiration >= absoluteExpiration))
            {
                throw new RedisCacheException("Sliding Expiration is greater or equal than Absolute Expiration.", null);
            }

            RedisDal dal = new RedisDal();

            if (_TypeStorage == Utility.TypeStorage.UseList)
            {
                if (!forceOverWrite)
                {
                    if (dal.ItemExist(key))
                    {
                        throw new RedisCacheException("This Item Exists.", null);
                    }
                    else
                    {
                        //Continue...
                    }
                }
                else
                {
                    if (dal.ItemExist(key))
                    {
                        dal.ItemDelete(key);
                    }
                    else
                    {
                        //Continue...
                    }
                }

                ItemCacheInfo <T> itemCacheInfo = new ItemCacheInfo <T>();
                itemCacheInfo.Data = value;
                itemCacheInfo.AbsoluteExpiration_TS = absoluteExpiration;
                itemCacheInfo.SlidingExpiration_TS  = slidingExpiration;
                itemCacheInfo.SerializeInfo();

                long result = dal.AddListItem(key, itemCacheInfo.Serialized_Data, itemCacheInfo.Serialized_TTL);
                _SetTTL(key, slidingExpiration, absoluteExpiration, dal);
                return(result);
            }
            else if (_TypeStorage == Utility.TypeStorage.UseHash)
            {
                throw new System.NotImplementedException();
            }
            if (_TypeStorage == Utility.TypeStorage.UseKeyValue)
            {
                throw new System.NotImplementedException();
            }
            else
            {
                throw new System.NotImplementedException();
            }
        }