Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Redis:Set time=获取时间。为什么?_Mongodb_Performance_Python 2.7_Redis_Ibm Cloud - Fatal编程技术网

Mongodb Redis:Set time=获取时间。为什么?

Mongodb Redis:Set time=获取时间。为什么?,mongodb,performance,python-2.7,redis,ibm-cloud,Mongodb,Performance,Python 2.7,Redis,Ibm Cloud,Short:Redis set time=获取时间 我做了一些测试,只插入了30000条记录,然后在Redis上接收了30000次 def redis_set(data): for k, v in data.iteritems(): redis_conn.set(k, v) def redis_get(data): for k in data.iterkeys(): val = redis_conn.get(k)

Short:Redis set time=获取时间

我做了一些测试,只插入了30000条记录,然后在Redis上接收了30000次

     def redis_set(data):
      for k, v in data.iteritems():
          redis_conn.set(k, v)

    def redis_get(data):
      for k in data.iterkeys():
         val = redis_conn.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()
         print "Starting test .. %s" % (test.__name__)
         test(data)
         elapsed = time.time() - start
         print "%s: %d ops in %.2f seconds : %.1f ops/sec" % (test.__name__, num, elapsed, num / elapsed)

     tests = [redis_set, redis_get]
     do_tests(30000, tests)
结果

Redis:

redis_设置:106.21秒运行30000次:282.4次/秒

redis_get:94.94秒内运行30000次:316.0次/秒

没事吧?

没什么问题

因为Redis是单线程的,所以读写操作没有锁惩罚。GET和SET都是一些内存操作,它们都非常快

根据您的基准测试,SET比GET慢一点。这也是合理的,因为SET操作需要为新添加的项分配内存,并且内存分配成本比其他内存操作高


另一方面,Mongodb的读操作比写操作快得多。因为它对读操作进行了很多优化,比如缓存。Mongodb使用的意向锁对读取操作更加友好,即多个读卡器可以同时从单个插槽读取数据,而写入程序是独占的。

Mongodb非常快,因为find只返回光标,而不返回数据-抱歉。我改变了问题删除MongoDB测试。