gpt4 book ai didi

mongodb - Redis:设置时间=获取时间。为什么?

转载 作者:可可西里 更新时间:2023-11-01 11:17:42 24 4
gpt4 key购买 nike

简而言之:Redis set time = get time(奇怪)

我做了一些测试,只插入 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:

redis_set:106.21 秒内 30000 次操作:282.4 次操作/秒

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

可以吗?

最佳答案

没有出错。

由于 Redis 是单线程的,因此读写操作没有锁定惩罚。 GETSET都是多次内存操作,速度都很快。

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

另一方面,Mongodb的读操作要比写操作快很多。因为它对读操作做了很多优化,比如缓存。并且Mongodb使用的意向锁对读操作更加友好,即多个读者可以同时从一个槽中读取数据,而写者是独占的。

关于mongodb - Redis:设置时间=获取时间。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43258885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com