sql >> Database >  >> NoSQL >> MongoDB

Hoeveel sneller is Redis dan mongoDB?

Ruwe resultaten van de volgende benchmark:2x schrijven, 3x lezen .

Hier is een eenvoudige benchmark in python die u kunt aanpassen aan uw doeleinden, ik was aan het kijken hoe goed elk zou presteren door simpelweg waarden in te stellen/op te halen:

#!/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)

Resultaten voor met mongodb 1.8.1 en redis 2.2.5 en laatste 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

Neem de resultaten natuurlijk met een korreltje zout! Als u in een andere taal programmeert, andere clients/andere implementaties gebruikt, enz., zullen uw resultaten enorm variëren. Om nog maar te zwijgen van het feit dat uw verbruik compleet anders zal zijn! U kunt ze het beste zelf benchmarken, precies op de manier waarop u ze wilt gebruiken. Als gevolg daarvan zul je waarschijnlijk de beste . ontdekken manier om van elk gebruik te maken. Altijd benchmark voor jezelf!



  1. De snelste MongoDB op Azure!

  2. Hoe array in subdocument te filteren met MongoDB

  3. Wachtwoorden opslaan met Node.js en MongoDB

  4. Redis en Memcache of alleen Redis?