【问题标题】:What does time complexity really mean in Redis?Redis 中时间复杂度的真正含义是什么?
【发布时间】:2015-08-15 03:48:18
【问题描述】:

例如,hgetall 说时间复杂度是 O(N)。如果一个哈希有 5 个字段,这是否意味着 Redis 正在执行 5 个操作?我知道 Redis 基于许多基准测试,每秒可以处理超过 80-100k 次操作。但真正的手术是什么?它是为命令列出的时间复杂度的 1-1 映射吗?这将帮助我确定我对 Redis 进行查询的阈值。

【问题讨论】:

  • 这不是大 O 表示法的意思。
  • 我知道,但是大 O 表示法与 Redis 中的操作有什么关系?声称有 80k 操作,但这是针对基本 hset 或 hget 命令的。如果返回 5 个字段,是 hgetall 5 操作吗?
  • 取决于您从哪里获得“索赔”
  • redis.io/topics/benchmarks 只是这些来源之一。
  • @dmastylo 我的回答有帮助吗?如果是,请接受,否则请询问是否有任何不清楚的地方

标签: redis


【解决方案1】:

从代码上看:

void genericHgetallCommand(client *c, int flags) {
    ... 
    ...
    while (hashTypeNext(hi) != C_ERR) {
            if (flags & OBJ_HASH_KEY) {
                addHashIteratorCursorToReply(c, hi, OBJ_HASH_KEY);
                count++;
            }
            if (flags & OBJ_HASH_VALUE) {
                addHashIteratorCursorToReply(c, hi, OBJ_HASH_VALUE);
                count++;
            }
        }

它遍历所有的键和值。因此,Hashset 越大,复杂度就越大。它的线

【讨论】:

  • 我想我的问题是“每秒操作数”是什么意思。我看到到处都是,甚至在 Redis 的基准测试页面上,但它并没有准确地解释什么是“操作”。
猜你喜欢
  • 1970-01-01
  • 2014-09-13
  • 2013-06-28
  • 1970-01-01
  • 1970-01-01
  • 2013-02-02
  • 1970-01-01
  • 2017-05-06
  • 2012-03-30
相关资源
最近更新 更多