sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cuánto más rápido es Redis que mongoDB?

Resultados aproximados del siguiente punto de referencia:2x escritura, 3x lectura .

Aquí hay un punto de referencia simple en python que puede adaptar a sus propósitos, estaba viendo qué tan bien funcionaría cada uno simplemente configurando/recuperando valores:

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

Resultados para con mongodb 1.8.1 y redis 2.2.5 y la última versión de 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

¡Toma los resultados con pinzas, por supuesto! Si está programando en otro lenguaje, usando otros clientes/diferentes implementaciones, etc., sus resultados variarán enormemente. ¡Sin mencionar que su uso será completamente diferente! Lo mejor que puedes hacer es compararlos tú mismo, precisamente de la manera en que pretendes usarlos. Como corolario, probablemente descubrirá el mejor manera de hacer uso de cada uno. ¡Siempre haz referencia a ti mismo!