国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php - Redis中incr與incrBy的差別
PHP中文網(wǎng)
PHP中文網(wǎng) 2017-05-16 13:04:35
0
4
1207

我看網(wǎng)上說他們的區(qū)別

但我自己試了下,發(fā)現(xiàn)incr也可以像incrby那樣指定增加量,這樣感覺這就沒區(qū)別了啊,下圖是我測試的結(jié)果.

PHP中文網(wǎng)
PHP中文網(wǎng)

認(rèn)證0級(jí)講師

全部回覆(4)
阿神

下面是Redis源碼,其實(shí)incr和incrBy在底層實(shí)作上是一致的,就是incrBy需要做一下參數(shù)校驗(yàn)

//incr命令
void incrCommand(redisClient *c) {
    incrDecrCommand(c,1);
}
//decr命令
void decrCommand(redisClient *c) {
    incrDecrCommand(c,-1);
}
//incrBy命令
void incrbyCommand(redisClient *c) {
    long long incr;

    if (getLongLongFromObjectOrReply(c, c->argv[2], &incr, NULL) != REDIS_OK) return;
    incrDecrCommand(c,incr);
}
//decrby命令
void decrbyCommand(redisClient *c) {
    long long incr;

    if (getLongLongFromObjectOrReply(c, c->argv[2], &incr, NULL) != REDIS_OK) return;
    incrDecrCommand(c,-incr);
}

從這裡可以看出incr是不支援?dāng)?shù)字參數(shù)的。

但是PHP中$redis為什麼支持?可能是這個(gè)函式庫的底層都是使用了redis的incrBy指令吧

Peter_Zhu

剛才源碼貼錯(cuò)了,修改一下


翻了下 phpredis 擴(kuò)充的源碼,應(yīng)該是 2.0.9 開始做的相容。

在呼叫 incr 時(shí),可選的帶一個(gè)long類型的數(shù)字,如果數(shù)字不為1,調(diào)用 incrby。

順便說一句,incrBy 的時(shí)候,如果後面參數(shù)是 1,會(huì)呼叫 incr。

PHP_METHOD(Redis, incr){

    zval *object;
    RedisSock *redis_sock;
    char *key = NULL;
    int key_len;
    long val = 1;

    if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|l",
                                     &object, redis_ce,
                                     &key, &key_len, &val) == FAILURE) {
        RETURN_FALSE;
    }

    if(val == 1) {
        redis_atomic_increment(INTERNAL_FUNCTION_PARAM_PASSTHRU, "INCR", 1);
    } else {
        redis_atomic_increment(INTERNAL_FUNCTION_PARAM_PASSTHRU, "INCRBY", val);
    }
}
習(xí)慣沉默

http://redisdoc.com/string/in...
http://redisdoc.com/string/in...
是不是在redis 內(nèi)部的執(zhí)行會(huì)不一樣? incr 傳遞參數(shù)的話,需要執(zhí)行參數(shù)指定次數(shù)
但是incrby 的話,只要執(zhí)行1次計(jì)算,得再去證實(shí)一下

PHPzhong

測試了下,看不出不同,運(yùn)行時(shí)間都一樣,不存在incr執(zhí)行多次。 23000000000000000000000000000這個(gè)數(shù)字 要是執(zhí)行多次,肯定要一定時(shí)間,但是和IncrBys所花時(shí)間是一樣的

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板