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:[EMAIL PROTECTED]:/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





)



Reply via email to