public virtual void Put(object key, object value)
{
key.ThrowIfNull("key");
value.ThrowIfNull("value");
log.DebugFormat("put in cache: regionName='{0}', key='{1}'", RegionName, key);
try
{
var serializedValue = options.Serializer.Serialize(value);
var cacheKey = CacheNamespace.GetKey(key);
var setOfActiveKeysKey = CacheNamespace.GetSetOfActiveKeysKey();
var db = GetDatabase();
db.ScriptEvaluate(putScript, new
{
key = cacheKey,
setOfActiveKeysKey = setOfActiveKeysKey,
value = serializedValue,
expiration = expiration.TotalMilliseconds
}, fireAndForgetFlags);
}
catch (Exception e)
{
log.ErrorFormat("could not put in cache: regionName='{0}', key='{1}'", RegionName, key);
var evtArg = new ExceptionEventArgs(RegionName, RedisCacheMethod.Put, e);
options.OnException(this, evtArg);
if (evtArg.Throw)
{
throw new RedisCacheException(RegionName, "Failed to put item in cache. See inner exception.", e);
}
}
}