sql >> データベース >  >> NoSQL >> MongoDB

RedisはmongoDBよりどれくらい速いですか?

    次のベンチマークの大まかな結果: 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)
    

    mongodb1.8.1とredis2.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
    

    もちろん、一粒の塩で結果を出してください!別の言語でプログラミングしている場合、他のクライアントや異なる実装を使用している場合など、結果は大きく異なります。言うまでもなく、使用法は完全に異なります。あなたの最善の策は、あなたがそれらを使用しようとしている方法で、それらを自分でベンチマークすることです。当然の結果として、おそらく最高のを理解するでしょう。 それぞれを利用する方法。常に自分でベンチマークしてください!



    1. マングースモデルでメソッドを定義するにはどうすればよいですか?

    2. RedisはWindows7のWindowsサービスとして起動しません

    3. 外部インジェクション攻撃からMongoDBを保護する

    4. コアデータ構造タイプ別の上位のRedisユースケース