sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvor meget hurtigere er Redis end mongoDB?

Grove resultater fra følgende benchmark:2x skrivning, 3x læsning .

Her er et simpelt benchmark i python, som du kan tilpasse til dine formål, jeg kiggede på, hvor godt hver enkelt ville udføre blot at indstille/hente værdier:

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

Resultater for med mongodb 1.8.1 og redis 2.2.5 og seneste 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

Tag selvfølgelig resultaterne med et gran salt! Hvis du programmerer på et andet sprog, bruger andre klienter/forskellige implementeringer osv. vil dine resultater variere voldsomt. For ikke at nævne din brug vil være helt anderledes! Dit bedste bud er at benchmarke dem selv, på præcis den måde, du har til hensigt at bruge dem. Som en konsekvens heraf vil du sandsynligvis finde ud af det bedste måde at gøre brug af hver. Benchmark altid for dig selv!



  1. Find og tæl elementer i samlingen med Mongoose

  2. Digital transformation er en datarejse fra kant til indsigt

  3. mongodb:indsæt hvis ikke eksisterer

  4. Hvordan omdøber jeg felter, når jeg udfører søgning/projektion i MongoDB?