Grova resultat från följande benchmark:2x skriv, 3x läs .
Här är ett enkelt riktmärke i python som du kan anpassa till dina syften, jag tittade på hur bra var och en skulle prestera genom att bara ställa in/hämta värden:
#!/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)
Resultat för med mongodb 1.8.1 och redis 2.2.5 och senaste 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
Ta resultatet med en nypa salt såklart! Om du programmerar på ett annat språk, använder andra klienter/olika implementeringar, etc kommer dina resultat att variera mycket. För att inte tala om din användning kommer att vara helt annorlunda! Din bästa insats är att jämföra dem själv, på exakt det sätt du tänker använda dem. Som en följd av detta kommer du förmodligen att räkna ut det bästa sätt att använda var och en. Utvärdera alltid dig själv!