# Generating hash values directly

Hash a key value

## SYNOPSIS

#include <libmemcached/memcached.h>

  Compile and link with -lmemcachedutil -lmemcached

uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memcached_hash_t hash_algorithm)
  Parameters:

    - key -- the key to generate a hash of

    - key_length -- the length of the `key` without any terminating zero

    - hash_algorithm -- `memcached_hash_t`, the algorithm to use

  Returns:

    a 32 bit hash value

uint32_t memcached_generate_hash(memcached_st *ptr, const char *key, size_t key_length)
  Parameters:

    - ptr -- pointer to an initialized `memcached_st` struct

    - key -- the key to generate a hash of

    - key_length -- the length of the `key` without any terminating zero

  Returns:

    a 32 bit hash value

typedef enum memcached_hash_t memcached_hash_t

enum memcached_hash_t
  enumerator MEMCACHED_HASH_DEFAULT
  enumerator MEMCACHED_HASH_MD5
  enumerator MEMCACHED_HASH_CRC
  enumerator MEMCACHED_HASH_FNV1_64
  enumerator MEMCACHED_HASH_FNV1A_64
  enumerator MEMCACHED_HASH_FNV1_32
  enumerator MEMCACHED_HASH_FNV1A_32
  enumerator MEMCACHED_HASH_HSIEH
  enumerator MEMCACHED_HASH_MURMUR
  enumerator MEMCACHED_HASH_JENKINS
  enumerator MEMCACHED_HASH_MURMUR3
  enumerator MEMCACHED_HASH_CUSTOM

## DESCRIPTION

`memcached_generate_hash_value()` allows you to hash a key using one of the hash functions defined in the library. This method is provided for the convenience of higher-level language bindings and is not necessary for normal memcache operations.

Support for `MEMCACHED_HASH_HSIEH` is a compile time option that is disabled by default. To enable tests for this hashing algorithm, configure and build libmemcached with the Hsieh hash enabled.

`memcached_generate_hash()` takes a `memcached_st` structure and produces the hash value that would have been generated based on the defaults of `memcached_st`.

As of version 0.36 all hash methods have been placed into the library libhashkit(3) which is linked with libmemcached(3). For more information please see its documentation.

## RETURN VALUE

A 32-bit integer which is the result of hashing the given key. For 64-bit hash algorithms, only the least-significant 32 bits are returned.

## SEE ALSO