Aşağıdaki ölçütten kaba sonuçlar: 2x yazma, 3x okuma .
İşte python'da amaçlarınıza uyarlayabileceğiniz basit bir karşılaştırma ölçütü, her birinin değerleri ayarlayıp / almayı ne kadar iyi performans gösterdiğine bakıyordum:
#!/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 ve redis 2.2.5 ve en son pymongo / redis-py ile ilgili sonuçlar:
$ ./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
Sonuçları bir tuz tuzu ile alın! Başka bir dilde programlama yapıyorsanız, diğer istemcileri / farklı uygulamaları vb. Kullanıyorsanız sonuçlarınız çılgınca değişecektir. Kullanımınızdan bahsetmiyorum tamamen farklı olacak! En iyi bahsiniz onları tam olarak kullanmak istediğiniz şekilde kıyaslamaktır. Bir sonuç olarak, muhtemelen her birini kullanmanın en iyi yolunu bulursunuz . Her zaman kendiniz için kıyaslama yapın!