MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie viel schneller ist Redis als mongoDB?

Grobe Ergebnisse aus folgendem Benchmark:2x schreiben, 3x lesen .

Hier ist ein einfacher Benchmark in Python, den Sie an Ihre Zwecke anpassen können. Ich habe mir angesehen, wie gut jeder einfach Werte setzen/abrufen würde:

#!/usr/bin/env python2.7
import sys, time
from pymongo import Connection
import redis

# connect to redis & mongodb
redis = redis.Redis()
mongo = Connection().test
collection = mongo['test']
collection.ensure_index('key', unique=True)

def mongo_set(data):
    for k, v in data.iteritems():
        collection.insert({'key': k, 'value': v})

def mongo_get(data):
    for k in data.iterkeys():
        val = collection.find_one({'key': k}, fields=('value',)).get('value')

def redis_set(data):
    for k, v in data.iteritems():
        redis.set(k, v)

def redis_get(data):
    for k in data.iterkeys():
        val = redis.get(k)

def do_tests(num, tests):
    # setup dict with key/values to retrieve
    data = {'key' + str(i): 'val' + str(i)*100 for i in range(num)}
    # run tests
    for test in tests:
        start = time.time()
        test(data)
        elapsed = time.time() - start
        print "Completed %s: %d ops in %.2f seconds : %.1f ops/sec" % (test.__name__, num, elapsed, num / elapsed)

if __name__ == '__main__':
    num = 1000 if len(sys.argv) == 1 else int(sys.argv[1])
    tests = [mongo_set, mongo_get, redis_set, redis_get] # order of tests is significant here!
    do_tests(num, tests)

Ergebnisse für mit mongodb 1.8.1 und redis 2.2.5 und dem neuesten pymongo/redis-py:

$ ./cache_benchmark.py 10000
Completed mongo_set: 10000 ops in 1.40 seconds : 7167.6 ops/sec
Completed mongo_get: 10000 ops in 2.38 seconds : 4206.2 ops/sec
Completed redis_set: 10000 ops in 0.78 seconds : 12752.6 ops/sec
Completed redis_get: 10000 ops in 0.89 seconds : 11277.0 ops/sec

Nehmen Sie die Ergebnisse natürlich mit Vorsicht! Wenn Sie in einer anderen Sprache programmieren, andere Clients/unterschiedliche Implementierungen usw. verwenden, werden Ihre Ergebnisse stark variieren. Ganz zu schweigen davon, dass Ihre Nutzung völlig anders sein wird! Am besten vergleichen Sie sie selbst, genau so, wie Sie sie verwenden möchten. Als logische Folge werden Sie wahrscheinlich das Beste herausfinden Weise, jeden zu nutzen. Benchmarken Sie immer selbst!