NHibernate.Caches.Redis.RedisCache.Get C# (CSharp) Method

Get() public method

public Get ( object key ) : object
key object
return object
        public virtual object Get(object key)
        {
            key.ThrowIfNull();

            log.DebugFormat("get from cache: regionName='{0}', key='{1}'", RegionName, key);

            try
            {
                var cacheKey = CacheNamespace.GetKey(key);
                var setOfActiveKeysKey = CacheNamespace.GetSetOfActiveKeysKey();

                var db = GetDatabase();

                var resultValues = (RedisValue[])db.ScriptEvaluate(getScript, new
                {
                    key = cacheKey,
                    setOfActiveKeysKey = setOfActiveKeysKey
                });

                if (resultValues[0].IsNullOrEmpty)
                {
                    log.DebugFormat("cache miss: regionName='{0}', key='{1}'", RegionName, key);
                    return null;
                }
                else
                {
                    var serializedResult = resultValues[0];

                    var deserializedValue = options.Serializer.Deserialize(serializedResult);

                    if (deserializedValue != null && slidingExpiration != RedisCacheConfiguration.NoSlidingExpiration)
                    {
                        db.ScriptEvaluate(slidingExpirationScript, new
                        {
                            key = cacheKey,
                            expiration = expiration.TotalMilliseconds,
                            slidingExpiration = slidingExpiration.TotalMilliseconds
                        }, fireAndForgetFlags);
                    }

                    return deserializedValue;
                }
            }
            catch (Exception e)
            {
                log.ErrorFormat("could not get from cache: regionName='{0}', key='{1}'", RegionName, key);

                var evtArg = new ExceptionEventArgs(RegionName, RedisCacheMethod.Get, e);
                options.OnException(this, evtArg);
                if (evtArg.Throw)
                {
                    throw new RedisCacheException(RegionName, "Failed to get item from cache. See inner exception.", e);
                }

                return null;
            }
        }