Bullet Cache

Balancing speed and usability in a cache server

Bullet Cache is an in-memory cache server inspired by memcached, but with a twist: a powerful record tagging and bulk query facility, configurable multithreading models and a dump / cache prewarm option. This talk will have two parts: a technical description of Bullet Cache's implementation with focus on programming techniques and optimizations, and a description of usage scenarios with the focus on how it can help real-world applications (not limited to Web applications).

Bullet cache is an new solution to Web application cache problems. Where other cache servers fail by not providing the application enough control over its data, Bullet cache offers a unique interface which enables complex interactions between the application and its cached data. Bullet cache is highly optimized for the mode of operation where there are hundreds of thousands of concurrent requests for small objects, supporting key-value records, but with a twist! In addition to being highly optimized for speed, Bullet cache implements an innovative solution which enables cache records to carry certain metadata which can be used to further optimize common operations used by the applications. Using very simple and basic operations, records can be precisely queried or deleted in massive numbers, without the need to explicitly specify all record keys.

The project is written mostly in C++, with some parts in pure C, and was developed on and optimized for FreeBSD, and is released under the BSD license.