🙌
Dragonflyを試してみる
はじめに
Redis互換で25倍高速というふれこみのインメモリDB dragonfly を試してみます。個人的にはRedisで十分満足してるんですが、25倍速いと言われればどうしても使ってみたくなるのでさらっとやってみました。
起動してみる
一番簡単そうなのがdocker composeで起動するやつだったのでそちらでサクっと立ち上げてみる。
wget https://raw.githubusercontent.com/dragonflydb/dragonfly/main/contrib/docker/docker-compose.yml
docker-compose up -d
docker ps | grep dragonfly
de00a68de5ad docker.dragonflydb.io/dragonflydb/dragonfly "entrypoint.sh drago…" 11 seconds ago Up 10 seconds 0.0.0.0:6379->6379/tcp dragonfly-dragonfly-1
起動ログを確認する
docker logs dragonfly-dragonfly-1
I20220719 07:54:13.039849 1 init.cc:56] dragonfly running in opt mode.
I20220719 07:54:13.039968 1 dfly_main.cc:179] maxmemory has not been specified. Deciding myself....
I20220719 07:54:13.040131 1 dfly_main.cc:184] Found 6.89GiB available memory. Setting maxmemory to 5.51GiB
I20220719 07:54:13.042506 10 proactor.cc:456] IORing with 1024 entries, allocated 102720 bytes, cq_entries is 2048
I20220719 07:54:13.043591 1 proactor_pool.cc:66] Running 4 io threads
I20220719 07:54:13.046394 1 server_family.cc:193] Data directory is "/data"
I20220719 07:54:13.046569 1 server_family.cc:117] Checking "/data/dump"
I20220719 07:54:13.046802 11 listener_interface.cc:79] sock[15] AcceptServer - listening on port 6379
正常に起動したようだ。コンテナ内では/data
がデータディレクトリ。docker-compose.yml
にも定義されているがこれを外部ストレージにマウントしてやる。
こちらに記載があるがdockerで起動する際に--ulimit memlock=-1
オプションを指定する必要がある。Linuxの種類によってはデフォルトのmemlock limitが制限されている。dragonflyはそれを超えてリソースを使用するからだそうだ。
使ってみる
コンテナ起動後http://localhost:6379/
にアクセスするとステータス画面が表示される。そこはかとなくリッチ。
redis-cli
で操作してみる
redis-cli -h localhost -p 6379
localhost:6379>
localhost:6379> keys *
(empty array)
localhost:6379> set test1 1.0
OK
localhost:6379> keys *
1) "test1"
localhost:6379> get test1
"1.0"
localhost:6379> mset test2 2.0 test3 3.0 test4 4.0 test5 5.0
OK
localhost:6379> keys *
1) "test4"
2) "test5"
3) "test3"
4) "test2"
5) "test1"
localhost:6379> exit
ステータス画面で登録されているkeyが5になった。
Redis APIのサポート状況はここで確認できる。
おわりに
負荷かける環境を準備するのが面倒だったので今回はここまで。普通に使えそうな雰囲気なので何かのプロジェクトでデータキャッシュをRedisから乗り換えて運用してみてもいいかなと思った。
Discussion