Skip to main content

CacheLib is a general purpose caching engine that facilitates the easy development, scaling and maintenance of high performing caches. CacheLib was designed by drawing on experiences across a range of caching use cases at Facebook. From its first deployment in 2017, CacheLib now powers over 70 services at Facebook including Facebook’s CDN, social-graph cache, application look-aside cache, and block-storage system.

Large scale web service providers rely on caching to deliver a great user experience. While web applications commonly leverage remote look-aside caches, several other applications need a local in-process cache because, either they can not tolerate the RPC overhead of a common remote cache, or require strict cache consistency, or need domain specific cache features. These application teams often build and maintain application specific, highly specialized, local in-process caches. Without the ability to share improvements among each other, this approach leads to each team solving the hard problems of scaling cache performance in isolation.

CacheLib is a thread-safe, scalable, C++ library that provides the core caching functionality. It enables services to customize and scale highly concurrent caches easily, and to leverage the improvements across different caching systems by using a simple, expressive, thread-safe API. See docs for more info.

Features

  • Efficient implementations of caching indexes, eviction policies
  • Support for seamless hybrid caching (caches composed of DRAM and Flash) to achieve high hit ratios while caching large working sets. Relevant for content delivery cache use cases.
  • Optimizations for high throughput, low memory, and low CPU usage for a broad range of workloads.
  • Native implementations of arrays and hashmaps that can be cached and mutated efficiently without incurring any serialization overhead.
  • Ability to perform application binary restarts and retain the state of the cache

CacheLib Caching Engine: Design and Experiences at Scale was published at the USENIX OSDI` 20 conference. The publication can be accessed here and the video of the presentation is below.

More architecture docs coming soon!