首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在md5上使用crc32对memcached键进行散列

在md5上使用crc32对memcached键进行散列
EN

Stack Overflow用户
提问于 2013-03-11 19:47:12
回答 1查看 1.7K关注 0票数 1

我们目前使用MD5来散列我们想要在memcached中查找的键。

一个基本的例子是:

代码语言:javascript
复制
$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代替散列密钥以节省内存,例如:

代码语言:javascript
复制
$key = hash('crc32', $sql);

这只会生成8个字节的密钥。

这是一个足够好的解决方案来取代MD5作为密钥散列吗?是否增加了与按键的潜在冲突?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-11 20:09:29

请阅读http://bretm.home.comcast.net/~bretm/hash/8.html (TL;DR:"CRC32从来没有打算用于哈希表。真的没有充分的理由将其用于此目的,我建议您避免这样做“)。

您是否有那么多的独特查询需要切换到MD5之外的其他查询?如果是这样,可以考虑使用比CRC32更合适的工具,比如MurmurHashCityHash

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15337790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档