hash算法-crc32和fnv

这篇博客介绍了哈希算法中的CRC32和FNV-1a,讨论了它们在memcache中的应用以及各自的特性。FNV-1a虽然速度较慢但散列效果更优。文章还探讨了如何选择不同位数的哈希值以及如何将哈希值映射到特定范围内。
摘要由CSDN通过智能技术生成

 

memcache.hash_strategy = “standard”;
控制将key映射到server的散列函数。默认值”crc32″使用CRC32算法,而”fnv”则表示使用FNV-1a算法。 FNV-1a比CRC32速度稍低,但是散列效果更好。

 

市面上的哈希算法应该有很多种。FNV是第一种我真正接触哈希算法,算法简单。

简单介绍一下(其实就是翻译一下,汗!):

  FNV哈希函数,有三种FNV-0(已废弃),FNV-1, FNV-1a。

  FNV-1和FNV-1a算法对于最终生成的哈希值(hash)有一定限制

  1,hash是无符号整型

  2,hash的位数(bits),应该是2的n次方(32,64,128,256,512,1024),一般32位的就够用了。

  FNV-1形式:

hash = offset_basis 
for each octet_of_data to be hashed 
hash = hash * FNV_prime 
hash = hash xor octet_of_data 
 
hash = offset_basis 
for each octet_of_data to be hashed 
hash = hash xor octet_of_data 
hash = hash * FNV_prime 
return hash
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值