当前位置: 首页 > 面试题库 >

Redis比mongoDB快多少?

濮俭
2023-03-14
问题内容

人们普遍认为Redis的速度非常快,而mongoDB的速度也很快。但是,我很难找到比较两者结果的实际数字。给定相似的配置,功能和操作(并可能显示因素如何随着不同的配置和操作而变化)等,Redis的速度快10倍吗?快2倍吗?快5倍吗?

我只说性能。我知道mongoDB是另一种工具,具有更丰富的功能集。这不是“ MongoDB 比Redis 更好
”的争论。我问的是,Redis在什么方面优于mongoDB?

在这一点上,即使是便宜的基准也比没有基准要好。


问题答案:

来自以下基准的粗略结果: 2倍写入,3倍读取

这是一个简单的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

当然要加一点盐!如果您使用另一种语言进行编程,使用其他客户端/不同的实现方式等,则结果将大相径庭。更不用说您的用法将完全不同!最好的选择是按照自己打算使用它们的方式对它们进行基准测试。当然,您可能会想出利用每种方法的
最佳 方法。始终为自己设定基准!



 类似资料:
  • 我正在使用mongoose来计算匹配某个查询的文档数量。此查询的索引为: Mongo版本为3.2,收藏文档数量约为175万。 需要2分多钟。但如果我这么做了: 然后大约需要2.5秒。 我做错什么了吗?我能做些什么来加快速度吗? 编辑:解释日志。 计数: 为了找到。

  • 官方TensorFlow性能指南规定: CNN使用的大多数TensorFlow操作都支持NHWC和NCHW数据格式。在GPU上,NCHW更快。但在CPU上,NHWC有时更快。 对于卷积,在TensorFlow/cuDNN中,NCHW比NHWC快多少?这方面是否有任何参考或基准? 还有,为什么更快?正如我所理解的(见这里),GPU上NHWC的TensorFlow将在内部始终转置到NCHW,然后调用N

  • 我知道React创建一个虚拟DOM并比较差异,然后只是更新真实DOM的实际元素,但是如果手动更改它,如何更有效呢?通过还是使用jQuery函数?

  • 问题内容: 谁能举例说明您将从Redis和MongoDB一起使用中受益的情况? 问题答案: Redis和MongoDB可以一起使用,效果很好。Craiglist是一家以运行MongoDB和Redis(以及MySQL和Sphinx)而闻名的公司。请参阅Jeremy Zawodny的演示文稿。 MongoDB对于以各种方式索引的持久性,面向文档的数据很有趣。对于易失性数据或对延迟敏感的半永久性数据,R

  • 问题内容: 我想检查多线程是否比单线程快,然后在这里进行演示: 首先我用两个sum方法运行singleThreadStart,结果是 然后我运行secondThreadStart,结果是 然后我用五和方法运行singleThreadStart,结果是 最后我运行FiveThreadStart,结果是 我的问题是: SecondThreadStart比singleThreadStart花费更多的时间

  • 我想检查多线程是否比单线程快,然后我在这里做一个演示: 首先,我用二和方法运行singleThreadStart,结果是 然后我运行第二个ThreadStart,结果是 然后我用五和方法运行singleThreadStart,结果是 最后我运行fiveThreadStart,结果是 我的问题是: SecondThreadStart比singleThreadStart花费更多的时间,是因为创建线程的