我们目前使用 MD5 对要在 memcached 中查找的键进行哈希处理。
一个基本的例子是:
$sql = "SELECT * FROM articles WHERE id = 1";
$key = md5($sql);
if (!$results = $memcache->get($key)) {
$results = $db->query($sql);
$memcache->set($key, $results);
}
密钥大小都是 32 字节,因为它使用 MD5 对密钥进行哈希处理。
我们正在考虑使用 crc32 来散列密钥以节省内存,例如:
$key = hash('crc32', $sql);
这会生成一个只有 8 个字节的密钥。
这是将 MD5 替换为密钥哈希的足够好的解决方案吗?与键的潜在碰撞是否增加?