RedisとRocksDBについて読んだことがありますが、RockisDBよりもRedisの利点は得られません。
Redisはすべてインメモリであり、RocksDBはインメモリであり、フラッシュストレージを使用することを知っています。すべてのデータがメモリ内に収まる場合、どちらを選択する必要がありますか?彼らは同じパフォーマンスを持っていますか? RedisはCPUの数に比例してスケーリングしますか?私は得られない他の違いがあると思います。
メモリ内に収まるデータセットがあり、Redisを選択するつもりでしたが、RocksDBからも同じことが提供されているようです。
共通点はありません。ここでリンゴとオレンジを比較しようとしています。
Redisはリモートインメモリデータストアです(memcachedと同様)。サーバーです。単一のRedisインスタンスは非常に効率的ですが、完全にスケーラブルではありません(CPUに関して)。 Redisクラスターはスケーラブルです(CPUに関して)。
RocksDBは埋め込みキー/値ストアです(BerkeleyDBまたはより正確にはLevelDBに似ています)。これは、マルチスレッドとログ構造化マージツリーに基づく永続性をサポートするライブラリです。
Didier Speziaの答えは2つのプロジェクトを区別している間は正しいですが、はLedisDB というプロジェクトによってリンクされています。 LedisDBはGoで記述された抽象化レイヤーで、RocksDBなどのストレージエンジンの上にRedis APIの多くを実装しています。多くの場合、同じRedisクライアントライブラリをLedisDBで直接使用できます。これにより、特定の状況でRedisに代わるものがほとんどなくなります。 Redisは明らかに高速ですが、OPが質問で述べたように、RocksDBを使用する主な利点は、データセットが利用可能なメモリの量に制限されないことです。超大規模なデータセットを処理しているからではなく、RAMが高価であり、小規模な仮想サーバーからより多くのマイレージを得ることができるためです。
多くのmemcachedサーバーはRedisを使用します(使用されるプロトコルはmemcachedですが、基礎となるサーバーはRedisです)。これはRedisの機能のほとんどを使用していませんが、RedisとRocksDBの両方が同様に機能する1つのケースです(KVSとして、まだ異なるコンテキストで、Redisベースのmemcachedはキャッシュですが、RocksDBはデータベースですが、エンタープライズグレードではありません)
@Guilleホットデータ(頻繁に取得される)の動作がタイムスタンプに基づいていることがわかっている場合、Rocksdbは賢明な選択ですが、bloom-filtersを使用してフォールバック用に最適化します。ホットデータがランダムな場合は、Redisに進みます。 Rocksdbのようなログ構造のデータベースでは、rocksDBを完全にメモリ内で使用することはお勧めできません。SSDやフラッシュストレージ用に最適化されています。