Kết quả thô từ điểm chuẩn sau: viết 2x, đọc 3x .
Đây là một điểm chuẩn đơn giản trong python mà bạn có thể thích ứng với mục đích của mình, tôi đã xem xét mỗi cái sẽ thực hiện tốt như thế nào chỉ đơn giản là thiết lập / truy xuất các giá trị:
#!/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)
Kết quả với mongodb 1.8.1 và redis 2.2.5 và pymongo / redis-py mới nhất:
$ ./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
Lấy kết quả với một hạt muối tất nhiên! Nếu bạn đang lập trình bằng ngôn ngữ khác, sử dụng các ứng dụng khách / triển khai khác, v.v. thì kết quả của bạn sẽ thay đổi. Chưa kể cách sử dụng của bạn sẽ hoàn toàn khác! Đặt cược tốt nhất của bạn là tự đánh giá chúng, chính xác theo cách bạn đang có ý định sử dụng chúng. Như một hệ quả tất yếu, bạn có thể sẽ tìm ra cách tốt nhất để sử dụng từng cái. Luôn luôn chuẩn cho chính mình!