Несколько фреймворков на замену штатной реализации IMemoryCache
🔸FastCache (тупо обертка над ConcurrentDictionary)
🔸LazyCache (похоже подзабили на него, хотя он у меня работает в нескольких проектах)
🔸FusionCache
🔸intelligentcache
🔸CacheTower (пока остановился на нём)
🔸EasyCaching
Вообще мне для нормальной жизни надо несколько вещей от кэша:
* чтобы умело опционально иметь backend для Redis
* чтобы GetOrAdd (GetOrSet) имело лок на cache key - чтобы в конкурентной среде фабрика для создания итема не вызывалась несколько раз (как это в ConcurrentDictionary например)
* (редко) событие на evict итема по expiration
* (редко) sliding expiration
И я ещё не встречал кэша (для дотнета по крайней мере), который позволял бы держать дерево/граф итемов с evict всех зависимых частей.
К примеру, у нас есть user и teams в которые он входит. При добавлении/удалении нового юзера в team - хотелось бы чтобы можно было удалить все тимы по id юзера (с которыми он связан). Есть разумеется и более сложные случаи, когда от одного итема зависит десяток других в кэше, так вот хотелось бы их тоже все evict'нуть. #dotnet
Post #324
622
- ❤ 3
- 🔥 3