Kết quả gần đúng từ điểm chuẩn sau: ghi 2 lần, đọc 3 lần .
Đây là một điểm chuẩn đơn giản trong python mà bạn có thể điều chỉnh cho phù hợp với mục đích của mình, tôi đang xem xét mức độ hoạt động của mỗi giá trị chỉ đơn giản là đặt / truy xuất:
#!/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ả cho 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
Tất nhiên, hãy coi trọng kết quả bằng một hạt muối! Nếu bạn đang lập trình bằng một ngôn ngữ khác, sử dụng các ứng dụng khách khác / các cách triển khai khác, v.v. thì kết quả của bạn sẽ rất khác nhau. Chưa kể cách sử dụng của bạn sẽ khác hoàn toàn! Đặt cược tốt nhất của bạn là tự đánh giá chúng theo cách chính xác mà 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 điều gì tốt nhất cách tận dụng từng thứ. Luôn chuẩn bị cho chính bạn!