Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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
在Redis中,时间复杂性到底意味着什么?_Redis - Fatal编程技术网

在Redis中,时间复杂性到底意味着什么?

在Redis中,时间复杂性到底意味着什么?,redis,Redis,例如,hgetall说时间复杂度是O(N)。如果一个散列有5个字段,这是否意味着Redis正在执行5个操作?我知道基于许多基准的Redis每秒可以处理80-100k操作。但真正的手术是什么?它是命令所列时间复杂度的1-1映射吗?这将帮助我确定对Redis进行查询的阈值。从代码的外观来看: void genericHgetallCommand(client *c, int flags) { ... ... while (hashTypeNext(hi) != C_ERR)

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

从代码的外观来看:

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++;
            }
        }

它迭代所有键和值。因此,哈希集越大,复杂性就越大。它的行

这不是大O表示法的意思。我知道,但大O表示法与Redis中的操作有什么关系?声称有80k操作,但这是基本的hset或hget命令。如果返回5个字段,hgetall是否为5个操作?取决于您从何处获得“索赔”只是其中一个来源。@dmastylo我的答案有帮助吗?如果是的话,请接受它,否则,如果有什么不清楚的话,请直接问我。我想我的问题是,在“每秒操作数”方面,这意味着什么。我看到这一点到处都是,甚至在Redis的基准测试页面上,但它并没有准确地解释什么是“操作”。