ILSpy reveals that:
invalidLoginCache[cacheKey] = invalidLogin;
is equivalent to:
invalidLoginCache.Set(
cacheKey, invalidLogin,
ObjectCache.InfiniteAbsoluteExpiration, null);
Does this explain what you're seeing?
Why don't you call Set, passing an explicit policy?