Grobe Ergebnisse aus dem folgenden Benchmark: 2x Schreiben, 3x Lesen .
Hier ist ein einfacher Benchmark in Python, den Sie an Ihre Zwecke anpassen können. Ich habe mir angesehen, wie gut jeder einzelne funktioniert, wenn er einfach Werte setzt / abruft:
#!/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)
Ergebnisse für mit mongodb 1.8.1 und redis 2.2.5 und neuestem 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
Nehmen Sie die Ergebnisse natürlich mit einem Körnchen Salz! Wenn Sie in einer anderen Sprache programmieren, andere Clients / andere Implementierungen usw. verwenden, variieren Ihre Ergebnisse stark. Ganz zu schweigen davon, dass Ihre Nutzung völlig anders sein wird! Am besten vergleichen Sie sie selbst, genau so, wie Sie sie verwenden möchten. Als Konsequenz werden Sie wahrscheinlich herausfinden, wie Sie jeden einzelnen am besten nutzen können. Immer Benchmark für sich selbst!