> For the complete documentation index, see [llms.txt](https://sliu583.gitbook.io/blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sliu583.gitbook.io/blog/specific-work/wisr-group/cache/index/hyperbolic-caching-flexible-caching-for-web-applications.md).

# Hyperbolic Caching: Flexible Caching for Web Applications

### Presentation&#x20;

![](/files/-M_fIbOEbcZH87awRn35)

![](/files/-M_fIeAA6asvM0N_S8BC)

![](/files/-M_fIhc5ulatgyGDA0mz)

* Multi-tier data center&#x20;
* Cache tier: e.x. redis or memcache&#x20;
  * Properties: web-like request pattern, various item cost, item expiration and so on&#x20;

![](/files/-M_fJ3g3Ax8WR7W8olM5)

![](/files/-M_fJ8V3IV3wflIMXvV_)

![](/files/-M_fJHL85tcmV6D7zMUw)

![](/files/-M_fJUjS3UoPC9i5D70E)

![](/files/-M_fJagby3VyDN8Xjb1_)

![](/files/-M_fJlyI1iTNdBJKKiae)

![](/files/-M_fJpwhawhCgIXFHnyc)

![](/files/-M_fK17r25xFKY17Yah8)

![](/files/-M_fK4oKgYds1HCx-bnp)

![](/files/-M_fXxNNOUkHmuvSzwVJ)

* Number of accesses: Frequency captures independent draws property of workloads&#x20;
* Time since i entered cache: Addresses problem of LFU by measuring relative popularity&#x20;

![](/files/-M_fYgxbUSMdCPGXun-K)

Item requests: A A B C C&#x20;

* t = 1: pr(A) = 1&#x20;
* t = 2: pr(A) = 1&#x20;
* t = 3: pr(A) = 2/3, pr(B) = 1&#x20;
* t = 4, pr(A) = 2/4, pr(B) = 1/2, pr(C) = 1&#x20;
* t = 5, pr(A) = 2/5, pr(B) = 1/3, pr(C) = 2/2 = 1&#x20;

![](/files/-M_fZkbvUnycozU0moW-)

* Static workload&#x20;

![](/files/-M_fZwcAKNYmS14TzKWK)

* caching as a service company&#x20;
* 16 applications with cache sizes chosen by the application developers&#x20;
  * Only a few which Hyperbolic performs worse&#x20;

![](/files/-M_f_G8F3e4FF19beFwy)

![](/files/-M_f_Jb_sN6BiRukMHf6)

* item costs&#x20;
  * CPU / DB load: experience a miss, cause the item is the result of the join rather than simple look up&#x20;

![](/files/-M_f_zdWuOYhhFsWkTJb)

* GreedyDual&#x20;
  * Incorporating cost into LRU&#x20;

![](/files/-M_faEL88FJWRoP3LuVR)

![](/files/-M_faQVwrbETeMCYOgG2)

![](/files/-M_fadsYb7ptPwkqyQv0)

* Stress one of the backend and measure tail latency&#x20;
* Tracking costs per item and per class&#x20;
  * Load one of the backend, takes time to adjust to the knowledge --> spike in latency that is not experienced by per-class&#x20;

![](/files/-M_fb-eHcex32SJXF051)

![](/files/-M_fb5Bla01J4vAw43Ez)
