hashFunction(key) {
    const bytes = encoding.encode(key);
    const { length } = bytes;

    let hash = 2166136261; // FNV_offset_basis (32 bit)

    for (let i = 0; i < length; i++) {
      hash ^= bytes[i]; // XOR
      hash *= 16777619; // 32 bit FNV_prime
    }

    return (hash >>> 0) % this.buckets.length;
  }
Polynomial hash codes are used to hash String typed keys.
It uses FVN-1a hashing algorithm for 32 bits
@see http://bit.ly/fvn-1a
@param {any} key
@return {integer} bucket index