SORU
9 Mart 2011, ÇARŞAMBA


Ne kadar hızlı mongoDB daha Redis?

Redis "Hızlı" ve mongoDB çok hızlı. cayır cayır yanıyor o çok konuşulan. Ama sorun gerçek sayılar iki sonuçlarını karşılaştırarak bulmakta zorlanıyorum. Benzer yapılandırmaları verilen özellikleri ve işlemleri (ve belki faktörü farklı yapılandırmaları ve işlemleri ile nasıl değiştiğini gösteren),, Redis 10x daha hızlıdır? vb Daha hızlı 2x?, 5x daha hızlı?

SADECE performans konuşuyorum. MongoDB farklı bir araç olduğunu anladım ve daha zengin bir özellik seti vardır. Bu "mongoDB . değil ^em>daha iyiRedis" tartışması. Eğrileri mongoDB Redis yaptıkları soruyorum?

Bu noktada, hatta ucuz kriterler hayır kriterler daha iyi.

CEVAP
3 Mayıs 2011, Salı


Aşağıdaki kaba sonuçlar kriter:2x yazma, 3x oku.

İşte amaçlar için adapte olabilir, her sade/değerleri alma ayarı nasıl performans göstereceğini merak bakıyordum: python ile basit bir kıyaslama

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

1.8.1 mongodb ve redis 2.2.5 ile ilgili sonuçları ve son redis-py: pymongo/

$ ./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

Elbette inanmayarak sonuçları alın! Eğer başka bir dilde programlama, diğer istemcileri kullanarak farklı uygulamaları, sonuçları wildy değişir etc/. Kullanım bahsetmiyorum bile tamamen farklı olacak! Yapabileceğiniz en iyi şey onları kendinle kıyaslama için, hassas bir şekilde onları kullanmak niyetinde olan. Bir sonucu olarak muhtemelen bulursuniyiher yolu kullanmak. Her zaman kendiniz için kriter!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BroadCity

    BroadCity

    10 ŞUBAT 2010
  • Digital Bounds

    Digital Boun

    19 Temmuz 2013
  • Triune Films

    Triune Films

    9 ŞUBAT 2006