public T Cache <T>(IRedisCommand <T> command, Func <T> miss) { if (!factory.IsEnabled) { return(miss()); } using (var connection = factory.Open()) { if (connection.IsPassThrough) { return(miss()); } if (command.Get(connection, out T item)) { return(item); } item = miss(); command.Set(connection, item); return(item); } }