在Redis中,时间复杂性到底意味着什么?
例如,hgetall说时间复杂度是O(N)。如果一个散列有5个字段,这是否意味着Redis正在执行5个操作?我知道基于许多基准的Redis每秒可以处理80-100k操作。但真正的手术是什么?它是命令所列时间复杂度的1-1映射吗?这将帮助我确定对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)
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的基准测试页面上,但它并没有准确地解释什么是“操作”。