Vmemcache Versions Save

Buffer based LRU cache

0.8.1

3 years ago

This is a minor patch release that includes a couple maintenance changes, plus a couple of small performance improvements.

  • Use fast-hash for sharding.
  • Fix comparison of bytes with 8th bit set in the index radix tree.
  • Use chattr for the cache's file to enable nocow.
  • Fix some issues on 32-bit platforms.
  • Migrate from obsolete __sync_fetch API to __atomic_fetch.
  • Increase guard size to 4096 bytes.
  • Various documentation and test improvements.
  • add vmemcache_exists() to check entry existence without side-effects
  • Regression fixes for recent compilers

0.8

5 years ago

This is the first official release of libvmemcache. It's an embeddable and lightweight in-memory caching solution designed to fully take advantage of large capacity memory, such as Persistent Memory with DAX, through memory mapping in an efficient and scalable way.

Among other things, it includes:

  • Extent-based memory allocator which sidesteps the fragmentation problem that affects most in-memory databases and allows the cache to achieve very high space utilization for most workloads.
  • Buffered LRU, which combines a traditional LRU doubly-linked list with a non-blocking ring buffer to deliver a high degree of scalability on modern multi-core CPUs.
  • Unique indexing structure, critnib, which delivers high-performance while being very space efficient.

The reason this release has version 0.8 is because we are still looking for actual real-world feedback before we stabilize the APIs and commit to maintaining backward compatibility. It does not mean that the library is unfinished or unstable. On the contrary, the cache is fully functional and we are confident in its quality.