Грубые результаты из следующего теста: 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
Взять результаты с крошкой соли конечно! Если вы программируете на другом языке, используете другие клиенты / другие реализации и т. Д., Ваши результаты могут отличаться. Не говоря уже о том, что ваше использование будет совершенно другим! Лучше всего сравнить их самим, именно так, как вы собираетесь их использовать. Как следствие, вы, вероятно, найдете лучший способ использовать каждый из них. Всегда ориентируйтесь на себя!