getStats method
获取统计信息
Implementation
@override
Future<CacheStats> getStats() async {
final expired = _cache.values.where((item) => item.isExpired).length;
if (_cache.isEmpty) {
return CacheStats(
totalItems: 0,
totalSize: 0,
expiredItems: 0,
oldestItem: null,
newestItem: null,
);
}
return CacheStats(
totalItems: _cache.length,
totalSize: _cache.values.fold<int>(0, (sum, item) => sum + item.size),
expiredItems: expired,
oldestItem: _cache.values
.map((e) => e.createdAt)
.reduce((a, b) => a.isBefore(b) ? a : b),
newestItem: _cache.values
.map((e) => e.createdAt)
.reduce((a, b) => a.isAfter(b) ? a : b),
);
}