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