IT技术博客大学习 共学习 共进步

memcache-2.2.4 中对key的转换

PHPor 的Blog 2010-05-20 13:21:42 浏览 3,041 次
一次在使用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[i] = ((unsigned char)key[i]) > \' \' ? key[i] : \'_\';

     }

     return MMC_OK;

    }

建议继续学习

  1. 关于memcache分布式一致性hash (阅读 11,661)
  2. Memcache分布式部署方案 (阅读 6,666)
  3. 关于session和memcache的若干问题 (阅读 5,185)
  4. Memcache mutex设计模式 (阅读 4,904)
  5. Memcache源代码分析之数据存储 (阅读 4,862)
  6. 解决memcache连接奇慢问题一例 (阅读 4,744)
  7. Memcache协议的学习 (阅读 4,704)
  8. 关于Memcache长连接自动重连的问题 (阅读 4,640)
  9. Memcache源代码分析之网络处理 (阅读 4,543)
  10. memcache的几点注意 (阅读 4,201)