cachegrand - a modern data ingestion, processing and serving platform built for today's hardware
π cachegrand v0.4.0: Implement Authentication Support, Improved Logging, New Commands, redis-benchmark support and More!
We are thrilled to announce the release of cachegrand v0.4.0, featuring a wide array of improvements and bugfixes!
β¨ Here's a quick rundown of what's new in v0.4.0:
default
username if no username is provided.redis-benchmark -t ping,get,set,incr,mset
to run the benchmarks.π Visit our website https://cachegrand.io/ and GitHub repository https://github.com/danielealbano/cachegrand for more information.
π― To try it out
docker run \
-it \
--pull=always \
--ulimit memlock=-1:-1 \
--ulimit nofile=262144:262144 \
-p 6379:6379 \
-p 6380:6380 \
-p 9090:9090 \
--rm \
cachegrand/cachegrand-server:latest
Happy caching! π
π cachegrand v0.3.0: Multi database support, New Commands, Performance Enhancements, and More!
We are excited to announce the release of cachegrand v0.3.0, we have introduced several new features and performance improvements!
β¨ Here's a quick rundown of what's new in v0.3.0:
π Visit our website https://cachegrand.io/ and GitHub repository https://github.com/danielealbano/cachegrand for more information.
π― To try it out
docker run \
-it \
--pull=always \
--ulimit memlock=-1:-1 \
--ulimit nofile=262144:262144 \
-p 6379:6379 \
-p 6380:6380 \
-p 9090:9090 \
--rm \
cachegrand/cachegrand-server:latest
Happy caching! π
π cachegrand v0.2.1: New Commands, Snapshot Save at Shutdown, Performance Enhancements, and More!
We are excited to announce the release of cachegrand v0.2.1, we have introduced several new features and performance improvements!
β¨ Here's a quick rundown of what's new in v0.2.1:
With these new features and improvements, cachegrand continues to push the boundaries of Key-Value store performance. We are committed to making cachegrand the go-to solution for developers and organizations seeking the fastest and most efficient Key-Value store available.
cachegrand can now do its first steps in production environments as the new release now allows to to load and save (RDB) snapshots, save them on demand, on a schedule, on shutdown and via the SHUTDOWN SAVE (SHUTDOWN NOSAVE to skip the dump at the shutdown)!
We have also started a new repository called (cachegrand-benchmarks)[https://github.com/cachegrand/cachegrand-benchmarks] to track cachegrand's performance compared to the main competitors, it contains the raw data and a number of scripts to generate them.
Here an overview of the performance of cachegrand compared to the main competitors on the market
π Visit our website https://cachegrand.io/ and GitHub repository https://github.com/danielealbano/cachegrand for more information.
Also, don't miss out on the opportunity of joining the beta testing for a Cache-as-a-Service platform based on top of cachegrand, visit https://cachegrand.io/cache-as-a-service for more information.
π― To try it out
docker run \
-it \
--pull=always \
--ulimit memlock=-1:-1 \
--ulimit nofile=262144:262144 \
-p 6379:6379 \
-p 6380:6380 \
--rm \
cachegrand/cachegrand-server:latest
Happy caching! π
π cachegrand v0.2.0: Featuring RDB Load/Save, Eviction Policies, Performance Enhancements, and More!
We're excited to announce the release of cachegrand v0.2.0, packed with new features, optimizations, and improvements to elevate your data storage experience. Here's what's new in this release:
β¨ New Features:
π Visit our website https://cachegrand.io/ and GitHub repository https://github.com/danielealbano/cachegrand for more information.
Also, don't miss out on the opportunity of joining the beta testing for a Cache-as-a-Service platform based on top of cachegrand, visit https://cachegrand.io/cache-as-a-service for more information.
π― To try it out
docker run \
-it \
--pull=always \
--ulimit memlock=-1:-1 \
--ulimit nofile=262144:262144 \
-p 6379:6379 \
-p 6380:6380 \
--rm \
cachegrand/cachegrand-server:latest
π Below the list of supported Redis commands
Command | Notes |
---|---|
β APPEND | |
β COPY | Missing DB parameter |
β DBSIZE | |
β DECR | |
β DECRBY | |
β DEL | |
β EXISTS | |
β EXPIRE | |
β EXPIREAT | |
β EXPIRETIME | |
β FLUSHDB | Missing ASYNC parameter |
β GET | |
β GETDEL | |
β GETEX | |
β GETRANGE | |
β GETSET | |
β HELLO | Missing AUTH and SETNAME parameters |
β INCR | |
β INCRBY | |
β INCRBYFLOAT | |
β KEYS | |
β LCS | Missing IDX, MINMATCHLEN and WITHMATCHLEN parameters |
β MGET | |
β MSET | |
β MSETNX | |
β PERSIST | |
β PEXPIRE | |
β PEXPIREAT | |
β PEXPIRETIME | |
β PING | |
β PSETEX | |
β PTTL | |
β QUIT | |
β RANDOMKEY | |
β RENAME | |
β RENAMENX | |
β SCAN | Missing TYPE parameter |
β SET | |
β SETEX | |
β SETNX | |
β SETRANGE | |
β SHUTDOWN | |
β STRLEN | |
β SUBSTR | |
β TOUCH | |
β TTL | |
β UNLINK |
We appreciate your feedback and questions in the comments below. Thank you for trying cachegrand v0.2.0, and happy coding! π
It has been a while from the last release, this new version includes quite a number of minor bugfixes, general improvements and, most importantly, ARMv8 64bit support.
Now cachegrand can run on ARMv8 hardware when running a 64bit operating system, both the hashtable and the fiber library have been optimized to take advantage of the ARM instruction set.
The release actually contains also the initial implementation of the new hashtable although this hasn't been integrated in cachegrand yet.
The docker image has been updated to include the ARMv8 64bit build.
Below the full list of commands implemented
Command | Notes |
---|---|
β APPEND | |
β COPY | Missing DB parameter |
β DBSIZE | |
β DECR | |
β DECRBY | |
β DEL | |
β EXISTS | |
β EXPIRE | |
β EXPIREAT | |
β EXPIRETIME | |
β FLUSHDB | Missing ASYNC parameter |
β GET | |
β GETDEL | |
β GETEX | |
β GETRANGE | |
β GETSET | |
β HELLO | Missing AUTH and SETNAME parameters |
β INCR | |
β INCRBY | |
β INCRBYFLOAT | |
β KEYS | |
β LCS | Missing IDX, MINMATCHLEN and WITHMATCHLEN parameters |
β MGET | |
β MSET | |
β MSETNX | |
β PERSIST | |
β PEXPIRE | |
β PEXPIREAT | |
β PEXPIRETIME | |
β PING | |
β PSETEX | |
β PTTL | |
β QUIT | |
β RANDOMKEY | |
β RENAME | |
β RENAMENX | |
β SCAN | Missing TYPE parameter |
β SET | |
β SETEX | |
β SETNX | |
β SETRANGE | |
β SHUTDOWN | |
β STRLEN | |
β SUBSTR | |
β TOUCH | |
β TTL | |
β UNLINK |
Full Changelog: https://github.com/danielealbano/cachegrand/compare/v0.1.4...v0.1.5
This v0.1.4 add quite a few new commands and general improvements, most notably the memory consumption has been optimized pairing cachegrand slab allocator (now renamed FFMA or Fast Fixed Memory Allocator) with Microsoft's mimalloc allocator, which performs really better than tcmalloc and jemalloc and almost as well as FFMA without the downside of requiring extra memory.
Below the full list of commands implemented
Command | Notes |
---|---|
β APPEND | |
β COPY | Missing DB parameter |
β DBSIZE | |
β DECR | |
β DECRBY | |
β DEL | |
β EXISTS | |
β EXPIRE | |
β EXPIREAT | |
β EXPIRETIME | |
β FLUSHDB | Missing ASYNC parameter |
β GET | |
β GETDEL | |
β GETEX | |
β GETRANGE | |
β GETSET | |
β HELLO | Missing AUTH and SETNAME parameters |
β INCR | |
β INCRBY | |
β INCRBYFLOAT | |
β KEYS | |
β LCS | Missing IDX, MINMATCHLEN and WITHMATCHLEN parameters |
β MGET | |
β MSET | |
β MSETNX | |
β PERSIST | |
β PEXPIRE | |
β PEXPIREAT | |
β PEXPIRETIME | |
β PING | |
β PSETEX | |
β PTTL | |
β QUIT | |
β RANDOMKEY | |
β RENAME | |
β RENAMENX | |
β SCAN | Missing TYPE parameter |
β SET | |
β SETEX | |
β SETNX | |
β SETRANGE | |
β SHUTDOWN | |
β STRLEN | |
β SUBSTR | |
β TOUCH | |
β TTL | |
β UNLINK |
Notes: To improve the memory consumption the memory allocator used in some parts of cachegrand was switched from FFMA to mimalloc, this has caused a performance regression which will be addressed in a future release.
Full Changelog: https://github.com/danielealbano/cachegrand/compare/v0.1.3...v0.1.4
This new release introduces a number of improvements and bug fixes, most notabily fixes how io_uring short sends are handled which, in some edge cases, was causing local connection to receive partial data for values of >2.5MB.
The release also includes the new automated parser, which will drammatically speed up the support for the new commands, support for Read-Modify-Write operations in the Storage DB, full support for the SET command, some bugfixes and some general performance improvements.
Full Changelog: https://github.com/danielealbano/cachegrand/compare/v0.1.2...v0.1.3
This latest release includes a number of general improvements, like the TLS support, the MGET command and the pipelining support, and a number of fixes, including a corner case in the redis protocol parser that was showing up only when using pipelining.
Full Changelog: https://github.com/danielealbano/cachegrand/compare/v0.1.1...v0.1.2
This new release includes supports prometheus (more details here https://github.com/danielealbano/cachegrand/blob/main/docs/architecture/modules/prometheus.md ) to allows easy monitoring and metrics collections for benchmarking and a few minor fixes
Full Changelog: https://github.com/danielealbano/cachegrand/compare/v0.1.0...v0.1.1
Finally after an extensive amount of research, development and benchmarks, I am proud to release the v0.1.0 version of cahegrand!
This release has a pretty limited Redis compatibility, donβt expect to be able to run it with clients using anything more than the basic commands, and surely a few bugs sneaked through the testing process, but architecturally-wise the most is in-place allowing the platform to scale-up vertically almost linearly!
Notes:
If you decide to benchmark it, please keep in mind that you need to (a) enable the slab allocator and provide enough hugepages, (b) better to test it over the cable and not on localhost and (c) leave some cpu power for the kernel to process the network data otherwise the operating system will not be able to handle the incoming packets.
If you get a crash please enable sentry.io in the configuration and try to replicate the crash, a crash dump will be automatically uploaded and will be available for investigation, although please be aware that it might contain information from the memory used by the process.
Full Changelog: https://github.com/danielealbano/cachegrand/commits/v0.1.0