Redis vs RocksDB
j'ai lu à propos de Redis et RocksDB, Je ne comprends pas les avantages de Redis par rapport à RocksDB.
je sais que Redis est tout en mémoire et RocksDB est en mémoire et utilise le stockage flash. Si toutes les données sont en mémoire, laquelle choisir? ont-ils les mêmes performances? Redis balance linéairement avec le nombre de CPU? Je suppose qu'il y a d'autres différences que je ne comprends pas.
j'ai un ensemble de données qui correspond à la mémoire et j'allais choisir Redis mais il semble ce RocksDB m'offre la même chose et si un jour l'ensemble de données croît trop, je n'aurais pas à m'inquiéter de la mémoire.
3 réponses
Ils n'ont rien en commun. Vous essayez de comparer des pommes et des oranges ici.
Redis est un distance banque de données en mémoire (similaire à memcached). C'est un serveur. Une seule instance Redis est très efficace, mais totalement non évolutive (en ce qui concerne le CPU). Un cluster Redis est évolutif (en ce qui concerne le CPU).
RocksDB est un intégré stockage clé/valeur (similaire à BerkeleyDB ou plus exactement LevelDB). C'est une bibliothèque, supportant multi-threading et une persistance basée sur des arbres de fusion structurés en rondins.
alors que la réponse de Didier Spezia est correcte dans sa distinction entre les deux projets, ils lié par un projet appelé LedisDB. LedisDB est une couche d'abstraction écrite en Go qui implémente une grande partie de L'API Redis sur les moteurs de stockage comme RocksDB. Dans de nombreux cas, vous pouvez utiliser la même bibliothèque client Redis directement avec LedisDB, ce qui en fait presque une baisse en remplacement de Redis dans certaines situations. Redis est évidemment plus rapide, mais comme OP mentionné dans sa question, le principal avantage de L'utilisation de RocksDB est que votre ensemble de données n'est pas limité à la quantité de mémoire disponible. Je trouve cela utile non pas parce que je traite de très grands ensembles de données, mais parce que la RAM est chère et que vous pouvez obtenir plus de milage à partir de petits serveurs virtuels.
@Guille si vous savez que le comportement des données chaudes (qui sont récupérées fréquemment) est basé sur le pointage temporel, alors Rocksdb serait un choix intelligent, mais ne l'optimise pour le repli en utilisant des filtres de bloom .Si vos données sont aléatoires, optez pour Redis .L'utilisation de rocksDB entièrement en mémoire n'est généralement pas recommandée dans les bases de données structurées en log comme Rocksdb et son Spécialement optimisé pour le stockage SSD et flash .Donc, ma recommandation serait de comprendre l'usecase et de choisir un DB pour cette usecase particulière .