MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Колко по-бърз е Redis от mongoDB?

Приблизителни резултати от следния сравнителен тест:2x запис, 3x четене .

Ето един прост бенчмарк в python, който можете да адаптирате към целите си, гледах колко добре всеки ще изпълнява просто задаване/извличане на стойности:

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

Резултати за с mongodb 1.8.1 и redis 2.2.5 и най-новия 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

Вземете резултатите със зърно сол, разбира се! Ако програмирате на друг език, използвате други клиенти/различни реализации и т.н., вашите резултати ще варират невероятно. Да не говорим, че използването ви ще бъде напълно различно! Най-добрият ви залог е да ги сравните сами, точно по начина, по който възнамерявате да ги използвате. Като следствие вероятно ще разберете най-доброто начин да се възползвате от всеки. Винаги сравнявайте за себе си!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Извършване на изявление на случай в рамката за агрегиране на mongodb

  2. Как мога да хоствам собствен сървър за анализиране на Heroku, използвайки MongoDB?

  3. Meteor mongo актуализира вложен масив

  4. Как да създавате, показвате и пускате колекции в MongoDB

  5. Има ли причини, поради които трябва/не трябва да използвам ObjectId в моя RESTful URL адрес