evictExpired method

  1. @override
Future<int> evictExpired()
override

Automatically removes all expired elements.

Returns the number of elements removed

Implementation

@override
Future<int> evictExpired() async {
  await _ensureInitialized();

  final now = DateTime.now();
  final expiredKeys = <String>[];

  for (final entry in _metadataCache.entries) {
    if (entry.value.expiresAt != null &&
        now.isAfter(entry.value.expiresAt!)) {
      expiredKeys.add(entry.key);
    }
  }

  for (final key in expiredKeys) {
    await remove(key);
  }

  return expiredKeys.length;
}