misskey-dev / misskey

🌎 An interplanetary microblogging platform 🚀
https://misskey-hub.net/
GNU Affero General Public License v3.0
9.84k stars 1.33k forks source link

RedisやめてDragonflyDBにする #10596

Open syuilo opened 1 year ago

syuilo commented 1 year ago

Summary

Redisよりモダンでパフォーマンスが良さそう

mattyatea commented 1 year ago

raspberry piだとdragonfly動かないからちょっとそれも考えてほしいかもしれない https://github.com/dragonflydb/dragonfly/issues/777

nexryai commented 1 year ago

dragonflyはRedisを完全に置き換えるというより大規模なシステム向けに最適化した感じっぽいのでRedisのサポートを切られるとつらい(メモリ大食いするらしいので厳しい)

okayurisotto commented 1 year ago

DragonflyDBに関しては知識がないのでわかりませんが、RedisのフォークとしてKeyDBというものがあります。ちょうどDragonflyDBのGitHubのREADMEに掲載されたベンチマーク結果のグラフに、RedisとDragonflyDBに挟まれるような形で描かれているものです。

https://github.com/dragonflydb/dragonfly#benchmarks https://github.com/Snapchat/KeyDB

KeyDBは、Redisとの完全な互換性が維持されており、Raspberry Pi ZeroのようなARMアーキテクチャをサポートしています。

https://docs.keydb.dev/docs/ARM/

以前個人的に気になってMisskeyのRedisをKeyDBで置き換えてみた^1ことがあったのですが、その時点ではまったく問題なく動作しているように見受けられました。(今でもできるかあとで少し試してみます。)

Redisを使っている現時点でどのような問題が起きていて、どの程度改善されれば許容されるのかがわからないのでなんとも言えないのですが、個人的には、とりあえずRedisをKeyDBで置き換えてみるのがよいと考えます。

okayurisotto commented 1 year ago

e3aeab8 で、docker-compose.ymlを下のように編集してサーバーを構築してみたところ、特にエラーなどはなく動作しています。

   redis:
     restart: always
-    image: redis:7-alpine
+    image: eqalpha/keydb:alpine
     networks:
       - internal_network
     volumes:
       - ./redis:/data
     healthcheck:
-      test: "redis-cli ping"
+      test: "keydb-cli ping"
       interval: 5s
       retries: 20
kiyo4act commented 1 year ago

大規模化のためにRedis対応しとるAWS使ってるので、Redis切られるとつらいです

u1-liquid commented 1 year ago

keydb、思ったよりいい感じに動作してくれるのを確認しました dragonflyと違って高負荷時に詰まりなども発生していないかも

MineCake147E commented 1 year ago

この「〇〇やめて□□にする」系を見ていつも思うのですが、ある程度抽象化してサーバー管理者が実装を選択できるようにできないのでしょうか。