memcache-2.2.4 中对key的转换

一次在使用PHP的memcache-2.2.4模块访问mc时,不小心把含有tab的字符串做了key,在跟踪时发现我的key中出现tab的地方都成了“_”了,于是怀疑memcache-2.2.4对我的key做了处理了,于是看了memcache-2.2.4的源码,才发现如下函数,该函数里面将assii码小于空格的字符都要转换成“_”的。

int mmc_prepare_key_ex(const char *key, unsigned int key_len, char *result, unsigned int *result_len
 TSRMLS_DC)  /* {{{ */
{
    unsigned int i;
    if (key_len == 0) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Key cannot be empty");
        return MMC_REQUEST_FAILURE;
    }

    *result_len = key_len < MMC_KEY_MAX_SIZE ? key_len : MMC_KEY_MAX_SIZE;
    result[*result_len] = ‘\0’;
   
    for (i=0; i<*result_len; i++) {
        result = ((unsigned char)key) > ‘ ‘ ? key : ‘_’;
    }
   
    return MMC_OK;
}

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据