Redis:设置时间=获取时间.为什么



短:Redis 设置时间 = 获取时间(奇怪(

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

     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_set:30000 次操作,106.21 秒:282.4 次/秒

redis_get:30000次操作,94.94秒:316.0次/秒

还行?

没有出错。

由于 Redis 是单线程的,因此读取和写入操作不会受到锁定惩罚。GETSET都是几个内存操作,而且都非常快。

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

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

最新更新