I am going to take the opportunity in the next few blog post to advertise my open source project - Bullet Cache, which is almost finished. Think of Bullet Cache as [*] "Memcached, only better" :) It offers some unique data query options and is blazingly fast! And good news for everyone who's asked: as promised, I've licensed it under the BSD license!
I'm announcing the availability of the 1.0-beta1 version of Bullet Cache! It is feature-complete and I consider it ready for public testing. C and PHP client libraries / "drivers" are currently implemented.
[*] for some values of "better"
I have written about this project before, mostly under its old name "MDCached" or "Multi-domain cache daemon" - which is hereby deprecated in favour of "Bullet Cache" and will be removed from the project eventually.
There are a lot of things to write about Bullet Cache - it is packed with some unique features, so that is what I will be doing in the following blog posts. The impatient can go and read the very fine manual (seriously, AsciiDoc produces some very nice output!).
In bullet points (har, har), its main features - selling points - are:
- Advanced multi-threaded design makes it extremely fast, efficient and more importantly, parallel on multi-core CPUs. Bullet Cache is designed to allow serious concurrency in its data store access.
- It implements a novel record metadata approach to cache records, making it possible to execute queries on cached records such as "get all cached data for a certain user" or "expire all data for a certain web page."
- It uses a very efficient network protocol and network IO design, allowing for the fastest path for simple "GET" operations on records to execute without a single malloc(), realloc() or memcpy() style operation.
It can be used to efficiently support large-scale caching implementations with fine-grained control!