NSMutableOrderedSetをつかうと

[self.cacheOrderedUniqueIds insertObject:cacheDataKey atIndex:0];
if ([self.cacheOrderedUniqueIds count] > [self cacheStorageCost]) {
  id lastKey = [self.cacheOrderedUniqueIds lastObject];
  [self.cacheInvalidationParams removeObjectForKey:last];
  [self.cacheOrderedUniqueIds removeObject:lastKey];
}

だけで済みそうです。