bigcache icon indicating copy to clipboard operation
bigcache copied to clipboard

Why do we need to configure both lifeWindow and cleanWindow?

Open Mavis2103 opened this issue 2 years ago • 2 comments

I have a few questions:

  1. If I only set cleanWindow (not lifeWindow) what happens to the cache? Can the cache be cleaned?
  2. Is it possible to set lifeWindow specifically for a cache created with its key? Because lifeWindow and cleanWindow are both configured in config if applied to all keys, I find lifeWindow and cleanWindow not very meaningful, instead just need 1 parameter like TTL
  3. The lifeWindow of a cache has its time reset when accessing that cache again while the lifeWindow is still valid. If not, what is the meaning of lifeWindow (similar to the question in question 2, it only needs 1 parameter)
  4. As I see it, if lifeWindow and cleanWindow are set to 10 seconds, the clear time will be the 20th second. My wish is the 10th second. So, I have to set lifeWindow < cleanWindow. I still don't understand the meaning of lifeWindow existence when it could be as simple as just 1 parameter like TTL
  5. If I use Delete("key"), will the cache be deleted? I hope to have an answer soon. Thanks for your support.

Mavis2103 avatar Sep 25 '23 04:09 Mavis2103

  1. Good point. That could be a bug. As there is no way to not set config entry you can only set it to 0 that will cause every entry be marked as expired. Maybe we should add a check for this and return error when life window is 0 and clean window not.

https://github.com/allegro/bigcache/blob/main/shard.go#L289

  1. Nope, life window is per all entries https://github.com/allegro/bigcache/issues/231
  2. I'm sorry I don't get this question. Could you rephrase it?
  3. ditto
  4. Nope, or not immediately. It will be marked as deleted and then replaced with new entry when it will be added.

janisz avatar Oct 12 '23 17:10 janisz

@Mavis2103: The motivation for having expiring and eviction as two separate processes in caches is to spend a deterministic amount of time locking the entries. Sharding is further used to help this, which bigcache also does.

coxley avatar Oct 20 '23 04:10 coxley