Getting Started With Dragonfly
Dragonfly is a modern in-memory datastore, fully compatible with Redis and Memcached APIs. Dragonfly implements novel algorithms and data structures on top of a multi-threaded, shared-nothing architecture. As a result, Dragonfly reaches x25 performance compared to Redis and supports millions of QPS on a single instance.
Dragonfly’s core properties make it a cost-effective, high-performing, and easy-to-use Redis replacement.
Dragonfly is released under BSL 1.1. In short it means that it is free for use and free to change as long as you do not use it to provide a paying support or a competing managed services for Dragonfly. For details you can read the full license here.
Running the server
Dragonfly runs on linux. It uses relatively new linux specific io-uring API for I/O, hence it requires Linux version 5.10 or later. Debian/Bullseye, Ubuntu 20.04.4 or later fit these requirements.
docker pull docker.dragonflydb.io/dragonflydb/dragonfly && \ docker tag docker.dragonflydb.io/dragonflydb/dragonfly dragonfly docker run --network=host --ulimit memlock=-1 --rm dragonfly redis-cli PING # redis-cli can be installed with "apt install -y redis-tools"
–ulimit memlock=-1 is needed since some Linux distros configure the default memlock limit for containers as 64m. Naturally, as an in-memory datastore, Dragonfly requires more.
Dragonfly supports redis run-time arguments where applicable.
For example, you can run:
docker run --network=host --ulimit memlock=-1 --rm dragonfly --requirepass=foo --bind localhost.
Dragonfly currently supports the following Redis arguments:
dir- by default, dragonfly docker uses
/datafolder for snapshotting. You can use
-vdocker option to map it to your host folder.
In addition, it has Dragonfly specific arguments options:
memcache_port- to enable memcached compatible API on this port. Disabled by default.
keys_output_limit- maximum number of returned keys in
keyscommand. Default is 8192.
keysis a dangerous command. we truncate its result to avoid blowup in memory when fetching too many keys.
dbnum- maximum number of supported databases for
cache_mode- see Cache section below.
For more options like logs management or tls support, run