ผลลัพท์คร่าวๆจากมาตรฐานต่อไปนี้: การเขียน 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
นำผลการทดสอบมาพร้อมเม็ดเกลือแน่นอน! หากคุณกำลังเขียนโปรแกรมในภาษาอื่นใช้ไคลเอนต์อื่น ๆ / การใช้งานที่แตกต่างกัน ฯลฯ ผลลัพธ์ของคุณจะแตกต่างกันไป ไม่พูดถึงการใช้งานของคุณจะแตกต่างอย่างสิ้นเชิง! ทางออกที่ดีที่สุดของคุณคือการกำหนดมาตรฐานด้วยตนเองในลักษณะที่คุณต้องการใช้อย่างแม่นยำ คุณอาจหาวิธีที่ดีที่สุดในการใช้ประโยชน์จากแต่ละวิธี มาตรฐานเสมอสำหรับตัวคุณเอง!