CacheManager
CacheManager copied to clipboard
RedisCacheHandle implementation of Clear() clears the entire database
It appears from the code that RedisCacheHandle.Clear() will actually flush the entire database. Doesn't that go against the intention individual ICache instances being isolated from others?
I don't 100% remember the reasons for that but there is technically no other (performant) way then FlushDB? Only possible way would be to track all keys or search keys and delete the found ones - which are all at least n+1 operations.
If you want real separation of keys, you can still use different databases
I cannot really change the behavior for now.
Clear will clear the DB, ClearRegion can be used to try to delete only tracked keys. The region mechanism isn't 100% reliable though with distributed caches as Redis can evict keys without the client noticing and so on...
But yeah, those are basically the 2 build in options, apart from using different Redis DBs in the first place.
I might try something with regions and key prefixes and maybe Redis can efficiently delete everything with prefix in newer versions? I just need time to work on stuff like that