Introducing Nebulex, a fast, flexible and powerful caching library for Elixir
Caching might be one of the most common and used techniques to improve performance, and in Elixir there are different options available; some of them very good options. However, most of them are focused on local caching, but let’s face it, we seldom deploy our systems in a single node, it’s not a common scenario, specially in the Elixir/Erlang world, is it? Most of the cases we deal with distributed systems, which involves at least two nodes, therefore, sometimes a local cache might be not enough, for those cases we might also need a distributed cache, that give us not only good performance but also linear scalability, and of course, make data accessible from any node of the cluster. But you might be wondering, why not both? Why not a tool or library that give us the ability to create different caching topologies depending on our needs; it could be a simple local cache, a distributed or partitioned cache, or even a near cache topology. Well, this is where Nebulex comes in!
Nebulex is an open source caching library written in Elixir, highly inspired by Ecto, taking advantage of many of its benefits. Nebulex brings new powerful and useful features to the table, these are some of them:
- Simple and fluent API inspired by Ecto
- Flexible and pluggable architecture like Ecto – based on adapter pattern
- Built-in cache adapters
- Support for different cache topologies – Partitioned, Near, etc.
- Time-based expiration
- Pre/post execution hooks
- Transactions (key-locking)
- Key versioning – optimistic offline locks
- Optional statistics gathering
Besides, Nebulex is very well documented, so the idea is you start checking out the next links and confirm by yourself how that easy it is, and of course, all mentioned features above:
- Online Documentation
- Getting Started Guide
Finally, if you find any bug or you have a suggestion, please feel free to open an issue, besides, don’t hesitate to send us pull requests in case you want to contribute :)