Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RedisCacheHandle implementation of Clear() clears the entire database #329

Open
erizzo opened this issue Jan 12, 2021 · 2 comments
Open

Comments

@erizzo
Copy link

erizzo commented Jan 12, 2021

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?

@MichaCo
Copy link
Owner

MichaCo commented Jan 13, 2021

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

@MichaCo
Copy link
Owner

MichaCo commented May 30, 2021

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

@MichaCo MichaCo added this to the Future milestone May 30, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants