* feat(docker-compose): Add `docker-compose.yml` #100 Signed-off-by: Ryan Russell <git@ryanrussell.org> * docs(build-from-source): Include build from source Signed-off-by: Ryan Russell <git@ryanrussell.org>
15
README.md
|
@ -19,7 +19,7 @@ Dragonfly's core properties make it a cost-effective, high-performing, and easy-
|
||||||
|
|
||||||
## Benchmarks
|
## Benchmarks
|
||||||
|
|
||||||
<img src="doc/throughput.svg" width="80%" border="0"/>
|
<img src="docs/throughput.svg" width="80%" border="0"/>
|
||||||
|
|
||||||
Dragonfly is crossing 3.8M QPS on c6gn.16xlarge reaching x25 increase in throughput compared to Redis.
|
Dragonfly is crossing 3.8M QPS on c6gn.16xlarge reaching x25 increase in throughput compared to Redis.
|
||||||
|
|
||||||
|
@ -47,13 +47,13 @@ In the following test, we filled Dragonfly and Redis with ~5GB of data
|
||||||
using `debug populate 5000000 key 1024` command. Then we started sending the update traffic with `memtier` and kicked off the snapshotting with the
|
using `debug populate 5000000 key 1024` command. Then we started sending the update traffic with `memtier` and kicked off the snapshotting with the
|
||||||
"bgsave" command. The following figure demonstrates clearly how both servers behave in terms of memory efficiency.
|
"bgsave" command. The following figure demonstrates clearly how both servers behave in terms of memory efficiency.
|
||||||
|
|
||||||
<img src="doc/bgsave_memusage.svg" width="70%" border="0"/>
|
<img src="docs/bgsave_memusage.svg" width="70%" border="0"/>
|
||||||
|
|
||||||
Dragonfly was 30% more memory efficient than Redis at the idle state.
|
Dragonfly was 30% more memory efficient than Redis at the idle state.
|
||||||
It also did not show any visible memory increase during the snapshot phase.
|
It also did not show any visible memory increase during the snapshot phase.
|
||||||
Meanwhile, Redis reached almost x3 memory increase at peak compared to Dragonfly.
|
Meanwhile, Redis reached almost x3 memory increase at peak compared to Dragonfly.
|
||||||
Dragonfly also finished the snapshot much faster, just a few seconds after it started.
|
Dragonfly also finished the snapshot much faster, just a few seconds after it started.
|
||||||
For more info about memory efficiency in Dragonfly see [dashtable doc](./doc/dashtable.md)
|
For more info about memory efficiency in Dragonfly see [dashtable doc](/docs/dashtable.md)
|
||||||
|
|
||||||
## Running the server
|
## Running the server
|
||||||
|
|
||||||
|
@ -65,10 +65,7 @@ Debian/Bullseye, Ubuntu 20.04.4 or later fit these requirements.
|
||||||
### With docker:
|
### With docker:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker pull docker.dragonflydb.io/dragonflydb/dragonfly && \
|
docker run --network=host --ulimit memlock=-1 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"
|
redis-cli PING # redis-cli can be installed with "apt install -y redis-tools"
|
||||||
```
|
```
|
||||||
|
@ -140,7 +137,7 @@ support order of magnitude higher speeds when replicating.
|
||||||
After replication and failover feature we will continue with other Redis commands from
|
After replication and failover feature we will continue with other Redis commands from
|
||||||
APIs 3,4 and 5.
|
APIs 3,4 and 5.
|
||||||
|
|
||||||
Please see [API readiness doc](doc/api_status.md) for the current status of Dragonfly.
|
Please see [API readiness doc](docs/api_status.md) for the current status of Dragonfly.
|
||||||
|
|
||||||
### Milestone - H/A
|
### Milestone - H/A
|
||||||
Implement leader/follower replication (PSYNC/REPLICAOF/...).
|
Implement leader/follower replication (PSYNC/REPLICAOF/...).
|
||||||
|
@ -169,7 +166,7 @@ with millisecond precision (PEXPIRE/PSETEX etc) will be rounded to closest secon
|
||||||
Such rounding has less than 0.001% error which I hope is acceptable for large ranges.
|
Such rounding has less than 0.001% error which I hope is acceptable for large ranges.
|
||||||
If it breaks your use-cases - talk to me or open an issue and explain your case.
|
If it breaks your use-cases - talk to me or open an issue and explain your case.
|
||||||
|
|
||||||
For more detailed differences between this and Redis implementations [see here](doc/differences.md).
|
For more detailed differences between this and Redis implementations [see here](docs/differences.md).
|
||||||
|
|
||||||
### Native Http console and Prometheus compatible metrics
|
### Native Http console and Prometheus compatible metrics
|
||||||
By default Dragonfly allows http access via its main TCP port (6379). That's right, you
|
By default Dragonfly allows http access via its main TCP port (6379). That's right, you
|
||||||
|
|
61
contrib/docker/README.md
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://dragonflydb.io">
|
||||||
|
<img src="https://raw.githubusercontent.com/dragonflydb/dragonfly/main/.github/images/logo-full.svg"
|
||||||
|
width="284" border="0" alt="Dragonfly">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Dragonfly DB with Docker Compose
|
||||||
|
|
||||||
|
This guide will have you up running DragonflyDB with `docker-compose` in just a few minutes.
|
||||||
|
|
||||||
|
| This guide assumes you have `docker` and `docker-compose` installed on your machine. If not, [Install Docker](https://docs.docker.com/get-docker/) and [Install Docker Compose](https://docs.docker.com/compose/install/) before continuing.
|
||||||
|
|
||||||
|
## Step 1
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Download Official Dragonfly DB Docker Compose File
|
||||||
|
wget https://github.com/dragonflydb/dragonfly/tree/main/contrib/docker/docker-compose.yml
|
||||||
|
|
||||||
|
# Launch the Dragonfly DB Instance
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Confirm image is up
|
||||||
|
docker ps | grep dragonfly
|
||||||
|
# ac94b5ba30a0 docker.dragonflydb.io/dragonflydb/dragonfly "entrypoint.sh drago…" 45 seconds ago Up 31 seconds 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp docker_dragonfly_1
|
||||||
|
|
||||||
|
# Log follow the dragonfly container
|
||||||
|
docker logs -f docker_dragonfly_1
|
||||||
|
```
|
||||||
|
|
||||||
|
Dragonfly DB will answer to both `http` and `redis` requests out of the box!
|
||||||
|
|
||||||
|
You can use `redis-cli` to connect to `localhost:6379` or open a browser and visit `http://localhost:6379`
|
||||||
|
|
||||||
|
## Step 2
|
||||||
|
|
||||||
|
Connect with a redis client.
|
||||||
|
|
||||||
|
From a new terminal:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
redis-cli
|
||||||
|
127.0.0.1:6379> set hello world
|
||||||
|
OK
|
||||||
|
127.0.0.1:6379> keys *
|
||||||
|
1) "hello"
|
||||||
|
127.0.0.1:6379> get hello
|
||||||
|
"world"
|
||||||
|
127.0.0.1:6379>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 3
|
||||||
|
|
||||||
|
Continue being great and build your app with the power of DragonflyDB!
|
||||||
|
|
||||||
|
### More Build Options
|
||||||
|
- [Docker Quick Start](/docs/quick-start/)
|
||||||
|
- [Kubernetes Deployment with Helm Chart](/contrib/charts/dragonfly/)
|
||||||
|
- [Build From Source](/docs/build-from-source.md)
|
10
contrib/docker/docker-compose.yml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
dragonfly:
|
||||||
|
image: 'docker.dragonflydb.io/dragonflydb/dragonfly'
|
||||||
|
ports:
|
||||||
|
- "6379:6379"
|
||||||
|
volumes:
|
||||||
|
- dragonflydata:/data
|
||||||
|
volumes:
|
||||||
|
dragonflydata:
|
33
docs/README.md
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://dragonflydb.io">
|
||||||
|
<img src="https://raw.githubusercontent.com/dragonflydb/dragonfly/main/.github/images/logo-full.svg"
|
||||||
|
width="284" border="0" alt="Dragonfly">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
# Quick Start
|
||||||
|
|
||||||
|
The easiest way to get started with Dragonfly is with Docker.
|
||||||
|
|
||||||
|
## Deployment Method
|
||||||
|
|
||||||
|
First, choose a deployment method.
|
||||||
|
|
||||||
|
If you are new to Dragonfly, we recommend the [DragonflyDB Docker Quick Start Guide](/docs/quick-start/)
|
||||||
|
|
||||||
|
Other options:
|
||||||
|
|
||||||
|
### - [Docker Compose](/contrib/docker/)
|
||||||
|
|
||||||
|
### - [Helm Chart for Kubernetes](/contrib/charts/dragonfly/)
|
||||||
|
|
||||||
|
|
||||||
|
# Learn About DragonflyDB
|
||||||
|
## [FAQ](/docs/faq.md)
|
||||||
|
|
||||||
|
## [Differences Between DragonflyDB and Redis](/docs/differences.md)
|
||||||
|
|
||||||
|
## [API Command Status](/docs/api_status.md)
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 97 KiB |
66
docs/build-from-source.md
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
# Build DragonflyDB From Source
|
||||||
|
|
||||||
|
## Running the server
|
||||||
|
|
||||||
|
Dragonfly runs on linux. It uses relatively new linux specific [io-uring API](https://github.com/axboe/liburing)
|
||||||
|
for I/O, hence it requires `Linux verion 5.10` or later.
|
||||||
|
Debian/Bullseye, `Ubuntu 20.04.4` or later fit these requirements.
|
||||||
|
|
||||||
|
### WARNING: Building from source on older kernels WILL NOT WORK.
|
||||||
|
|
||||||
|
If your host machine does not have at least `Linux verion 5.10` or later, we suggest you choose a [Dockerized Quick Start](/docs/quick-start/).
|
||||||
|
|
||||||
|
|
||||||
|
## Step 1
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone --recursive https://github.com/dragonflydb/dragonfly && cd dragonfly
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 2
|
||||||
|
```bash
|
||||||
|
# Install dependencies
|
||||||
|
sudo apt install ninja-build libunwind-dev libboost-fiber-dev libssl-dev \
|
||||||
|
autoconf-archive libtool cmake g++
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 3
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Configure the build
|
||||||
|
./helio/blaze.sh -release
|
||||||
|
|
||||||
|
# Build
|
||||||
|
cd build-opt && ninja dragonfly
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 4
|
||||||
|
```bash
|
||||||
|
# Run
|
||||||
|
./dragonfly --alsologtostderr
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Dragonfly DB will answer to both `http` and `redis` requests out of the box!
|
||||||
|
|
||||||
|
You can use `redis-cli` to connect to `localhost:6379` or open a browser and visit `http://localhost:6379`
|
||||||
|
|
||||||
|
## Step 5
|
||||||
|
|
||||||
|
Connect with a redis client
|
||||||
|
|
||||||
|
```bash
|
||||||
|
redis-cli
|
||||||
|
127.0.0.1:6379> set hello world
|
||||||
|
OK
|
||||||
|
127.0.0.1:6379> keys *
|
||||||
|
1) "hello"
|
||||||
|
127.0.0.1:6379> get hello
|
||||||
|
"world"
|
||||||
|
127.0.0.1:6379>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 6
|
||||||
|
|
||||||
|
Continue being great and build your app with the power of DragonflyDB!
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
47
docs/quick-start/README.md
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://dragonflydb.io">
|
||||||
|
<img src="https://raw.githubusercontent.com/dragonflydb/dragonfly/main/.github/images/logo-full.svg"
|
||||||
|
width="284" border="0" alt="Dragonfly">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
# Quick Start
|
||||||
|
|
||||||
|
Starting with `docker run` is the simplest way to get up and running with DragonflyDB.
|
||||||
|
|
||||||
|
If you do not have docker on your machine, [Install Docker](https://docs.docker.com/get-docker/) before continuing.
|
||||||
|
|
||||||
|
## Step 1
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run --network=host --ulimit memlock=-1 docker.dragonflydb.io/dragonflydb/dragonfly
|
||||||
|
```
|
||||||
|
|
||||||
|
Dragonfly DB will answer to both `http` and `redis` requests out of the box!
|
||||||
|
|
||||||
|
You can use `redis-cli` to connect to `localhost:6379` or open a browser and visit `http://localhost:6379`
|
||||||
|
|
||||||
|
## Step 2
|
||||||
|
|
||||||
|
Connect with a redis client
|
||||||
|
|
||||||
|
```bash
|
||||||
|
redis-cli
|
||||||
|
127.0.0.1:6379> set hello world
|
||||||
|
OK
|
||||||
|
127.0.0.1:6379> keys *
|
||||||
|
1) "hello"
|
||||||
|
127.0.0.1:6379> get hello
|
||||||
|
"world"
|
||||||
|
127.0.0.1:6379>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 3
|
||||||
|
|
||||||
|
Continue being great and build your app with the power of DragonflyDB!
|
||||||
|
|
||||||
|
### More Build Options
|
||||||
|
- [Docker Compose Deployment](/contrib/docker/)
|
||||||
|
- [Kubernetes Deployment with Helm Chart](/contrib/charts/dragonfly/)
|
||||||
|
- [Build From Source](/docs/build-from-source.md)
|
Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 174 KiB |