Regarding Consistent Hashing....

a. a at enyim.com
Thu Aug 30 12:29:01 UTC 2007


I'm using a slightly modified FNV hash in my client (http:// 
codeplex.com/EnyimMemcached), taken from here: http:// 
bretm.home.comcast.net/hash/6.html

The site has a good evaluation of common hash functions, good read.



a.



On Aug 30, 2007, at 1:32 PM, Mikael Johansson wrote:

> Hi,
>
> My vote is on using Brad's implementation but switch from SHA1 to  
> CRC32 for
> simplicity's sake and to get a nice 32bit hash, MD5 is slow and  
> generates a long
> digest of which we only need the first bytes.
>
> Richard Jones wrote that he would compare the CRC32 to FNV with  
> regards to
> distribution and speed. If FNV would indeed be a better/faster  
> choice I'd propose
> to use FNV-1a to generate 32bit hashes using the FNV_prime and  
> offset_basis from
>
>  http://isthe.com/chongo/tech/comp/fnv/
>
>  "Some people use FNV-1a instead of FNV-1 because they see slightly  
> better
> dispersion for tiny (<4 octets) chunks of memory." -
>
>  i.e. short keys
>
> An argument for using CRC32 over FNV could be that many script  
> languages ship
> with a native CRC32 implementation, so it'd easier and result in  
> higher
> performance for folk who writes clients in these languages.
>
> //Mikael
>
> On Thu Aug 30 10:48 , dormando  sent:
>
>> A couple, I think ;)
>>
>> Mikael, I think now's as good of a time as ever to decide on the  
>> hashing
>> standard. Believe brad's asked a few times if anyone has any  
>> complaints
>> with the Perl version, or any reasons/preferences as to one
>> implementation or the other. There's no authority on this other  
>> than the
>> people who respond here and have compelling arguments :)
>>
>> I only know of (offhand):
>>
>> - Yours
>> - libketama
>> - Set::ConsistentHash
>>
>> ... maybe Dustin wrote one? Maybe apr_memcache has one? I forget.
>>
>> All that really matters is that an approach not everyone completely
>> absolutely hates is decided on, so this can get into use. Based on  
>> MD5?
>> Based on CRC32? What works best?
>>
>> -Dormando
>>
>> Mikael Johansson wrote:
>>> Hi,
>>>
>>> I believe there's already people using consistent hashing on large
>>> installs out there. As to the pecl/memcache client the code is not
>>> released and still in CVS, but it is stable (and certainly ready  
>>> to be
>>> evaluated/tested), also a release is coming up so you can either  
>>> wait
>>> for that or build from source like
>>>
>>>  cvs -d :pserver:cvsread at cvs.php.net:/repository checkout pecl/ 
>>> memcache
>>>  cd pecl/memcache
>>>  phpize
>>>  ./configure
>>>  make && make install
>>>
>>> Enable it by setting an php.ini entry like
>>>
>>>  memcache.hash_strategy = consistent
>>>
>>> Please note that the consistent hashing implementation might still
>>> change in the future when a standard is reached on the subject.
>>>
>>> //Mikael
>>>
>>> Ajinkya Nahar wrote:
>>>> Hi all,
>>>>
>>>> I want to know whether consistent hashing technique can be used in
>>>> production environment.
>>>>
>>>> Is it still too young or is it of production quality?
>>>>
>>>> Also, what configuration needs to be done in the PHP client when  
>>>> using
>>>> consistent hashing?
>>>>
>>>> Please let me know.
>>>>
>>>> Thanks in advance.
>>>>
>>>> Regards,
>>>>
>>>> Ajinkya
>>>>
>>>>
>>>>
>>>
>>
>> )
>
>



More information about the memcached mailing list