Caching 基于哈希字符缓存文件时,为什么要使用最后一个字符而不是第一个?

Caching 基于哈希字符缓存文件时,为什么要使用最后一个字符而不是第一个?,caching,string-hashing,Caching,String Hashing,我看到有人建议,通过使用散列文件名的最后一个字符,可以在缓存中获得更好的“负载平衡”——例如,nginx就是这么做的(代理缓存模块)。有人能解释为什么使用最后的字符吗 编辑: 例如: md5('asdf') '912ec803b2ce49e4a541068d495ab570' md5('asdg') '7e6a6a87bf3ffb29a6dd9f14afdc3b88' “似乎”足够随机。通常有许多文件以相同的前缀开头。通过反转名称,可以增加随机性。如果文件名是路径,尤其如此。但是文件名是散列的

我看到有人建议,通过使用散列文件名的最后一个字符,可以在缓存中获得更好的“负载平衡”——例如,nginx就是这么做的(代理缓存模块)。有人能解释为什么使用最后的字符吗

编辑:

例如:

md5('asdf')
'912ec803b2ce49e4a541068d495ab570'
md5('asdg')
'7e6a6a87bf3ffb29a6dd9f14afdc3b88'

“似乎”足够随机。

通常有许多文件以相同的前缀开头。通过反转名称,可以增加随机性。

如果文件名是路径,尤其如此。但是文件名是散列的。问题是为什么散列的最后一个字符比第一个字符更随机?@jerd,有不同类型的散列算法。md5/sha256/etc用于从输入值生成唯一且一致的键以进行比较。缓存哈希算法从用于将缓存项放置在数量少得多的存储桶中的输入值生成单个数字。缓存哈希算法的唯一性和随机性要小得多。