Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

memcached_behavior_get (3libmemcached)

Name

memcached_behavior_get - libmemcached Documentation Manipulate the behavior of a memcached_st structure.

Synopsis

#include <libmemcached/memcached.h>

memcached_behavior_t

uint64_t                      memcached_behavior_get(memcached_st *ptr,
memcached_behavior_t flag)

memcached_return_t            memcached_behavior_set(memcached_st *ptr,
memcached_behavior_t flag, uint64_t data)

Compile and link with -lmemcached

Description

libmemcached                             MEMCACHED_BEHAVIOR_GET(3libmemcached)



NAME
       memcached_behavior_get - libmemcached Documentation

       Manipulate the behavior of a memcached_st structure.

SYNOPSIS
       #include <libmemcached/memcached.h>

       memcached_behavior_t

       uint64_t                      memcached_behavior_get(memcached_st *ptr,
       memcached_behavior_t flag)

       memcached_return_t            memcached_behavior_set(memcached_st *ptr,
       memcached_behavior_t flag, uint64_t data)

       Compile and link with -lmemcached

DESCRIPTION
       libmemcached(3)     behavior     can     be     modified    by    using
       memcached_behavior_set(). Default behavior is the library strives to be
       quick  and accurate. Some behavior, while being faster, can also result
       in not entirely accurate behavior (for instance,  memcached_set()  will
       always respond with MEMCACHED_SUCCESS).

       memcached_behavior_get()  takes  a behavior flag and returns whether or
       not that behavior is currently enabled in the client.

       memcached_behavior_set() changes the value of a  particular  option  of
       the client. It takes both a flag (listed below) and a value. For simple
       on or off options you just need to pass in  a  value  of  1.  Calls  to
       memcached_behavior_set() will flush and reset all connections.

       MEMCACHED_BEHAVIOR_USE_UDP

       Causes libmemcached(3) to use the UDP transport when communicating with
       a memcached server. Not all I/O operations are testsed when this behav-
       ior   is   enababled.   The   following  operations  will  return  MEM-
       CACHED_NOT_SUPPORTED when executed with the  MEMCACHED_BEHAVIOR_USE_UDP
       enabled:  memcached_version(),  memcached_stat(), memcached_get(), mem-
       cached_get_by_key(),  memcached_mget(),  memcached_mget_by_key(),  mem-
       cached_fetch(), memcached_fetch_result(), memcached_fetch_execute().

       All  other  operations are testsed but are executed in a 'fire-and-for-
       get' mode, in which once the client  has  executed  the  operation,  no
       attempt  will  be  made  to  ensure the operation has been received and
       acted on by the server.

       libmemcached(3) does not allow TCP and UDP servers to be shared  within
       the  same  libmemached(3)  client  'instance'.  An attempt to add a TCP
       server  when  this  behavior  is  enabled  will  result   in   a   MEM-
       CACHED_INVALID_HOST_PROTOCOL,  as  will  attempting to add a UDP server
       when this behavior has not been enabled.

       MEMCACHED_BEHAVIOR_NO_BLOCK

       Causes libmemcached(3) to use  asychronous  IO.  This  is  the  fastest
       transport available for storage functions.

       MEMCACHED_BEHAVIOR_SND_TIMEOUT

       This  sets  the  microsecond behavior of the socket against the SO_SND-
       TIMEO flag.  In cases where you cannot use non-blocking  IO  this  will
       allow you to still have timeouts on the sending of data.

       MEMCACHED_BEHAVIOR_RCV_TIMEOUT

       This  sets  the  microsecond behavior of the socket against the SO_RCV-
       TIMEO flag.

       In cases where you cannot use non-blocking IO this will  allow  you  to
       still have timeouts on the reading of data.

       MEMCACHED_BEHAVIOR_TCP_NODELAY

       Turns  on the no-delay feature for connecting sockets (may be faster in
       some environments).

       MEMCACHED_BEHAVIOR_HASH

       Makes the default hashing algorithm for keys use MD5. The value can  be
       set   to   either   MEMCACHED_HASH_DEFAULT,   MEMCACHED_HASH_MD5,  MEM-
       CACHED_HASH_CRC, MEMCACHED_HASH_FNV1_64, MEMCACHED_HASH_FNV1A_64,  MEM-
       CACHED_HASH_FNV1_32,  MEMCACHED_HASH_FNV1A_32,  MEMCACHED_HASH_JENKINS,
       MEMCACHED_HASH_HSIEH, and MEMCACHED_HASH_MURMUR.

       Each hash has it's advantages and it's weaknesses. If you don't know or
       don't care, just go with the default.

       Support  for MEMCACHED_HASH_HSIEH is a compile time option that is dis-
       abled by default. To enable tests for this hashing algorithm, configure
       and build libmemcached with the --enable-hash_hsieh.

       MEMCACHED_BEHAVIOR_DISTRIBUTION

       Using  this  you  can  enable different means of distributing values to
       servers.

       The default method is  MEMCACHED_DISTRIBUTION_MODULA.  You  can  enable
       consistent  hashing by setting MEMCACHED_DISTRIBUTION_CONSISTENT.  Con-
       sistent hashing delivers better distribution and allows servers  to  be
       added  to  the  cluster  with  minimal  cache  losses.  Currently  MEM-
       CACHED_DISTRIBUTION_CONSISTENT is an alias for the value MEMCACHED_DIS-
       TRIBUTION_CONSISTENT_KETAMA.

       MEMCACHED_BEHAVIOR_CACHE_LOOKUPS

       Deprecated  since  version  0.46(?):  DNS lookups are now always cached
       until an error occurs with the server.

       Memcached can cache named lookups so that DNS  lookups  are  made  only
       once.


       MEMCACHED_BEHAVIOR_SUPPORT_CAS

       Support CAS operations (this is not enabled by default at this point in
       the server since it imposes a slight performance penalty).

       MEMCACHED_BEHAVIOR_KETAMA

       Sets  the  default   distribution   to   MEMCACHED_DISTRIBUTION_CONSIS-
       TENT_KETAMA and the hash to MEMCACHED_HASH_MD5.

       MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED
              Sets  the default distribution to MEMCACHED_DISTRIBUTION_CONSIS-
              TENT_KETAMA with the weighted  tests.   and  the  hash  to  MEM-
              CACHED_HASH_MD5.

       MEMCACHED_BEHAVIOR_KETAMA_HASH

       Sets the hashing algorithm for host mapping on continuum. The value can
       be  set  to  either  MEMCACHED_HASH_DEFAULT,  MEMCACHED_HASH_MD5,  MEM-
       CACHED_HASH_CRC,  MEMCACHED_HASH_FNV1_64, MEMCACHED_HASH_FNV1A_64, MEM-
       CACHED_HASH_FNV1_32, and MEMCACHED_HASH_FNV1A_32.

       MEMCACHED_BEHAVIOR_KETAMA_COMPAT

       Sets the compatibility mode. The  value  can  be  set  to  either  MEM-
       CACHED_KETAMA_COMPAT_LIBMEMCACHED   (this   is  the  default)  or  MEM-
       CACHED_KETAMA_COMPAT_SPY to be compatible with the SPY Memcached client
       for Java.

       MEMCACHED_BEHAVIOR_POLL_TIMEOUT

       Modify the timeout value that is used by poll. The default value is -1.
       An signed int must be passed to memcached_behavior_set to  change  this
       value  (this requires casting). For memcached_behavior_get a signed int
       value will be cast and returned as the unsigned long long.

       MEMCACHED_BEHAVIOR_USER_DATA

       Deprecated since version <: 0.30

       MEMCACHED_BEHAVIOR_BUFFER_REQUESTS

       Enabling buffered IO causes commands to "buffer" instead of being sent.
       Any  action  that  gets  data  causes  this buffer to be be sent to the
       remote connection. Quiting the connection or closing down  the  connec-
       tion  will also cause the buffered data to be pushed to the remote con-
       nection.

       MEMCACHED_BEHAVIOR_VERIFY_KEY

       Enabling this will cause libmemcached(3) to test  all  keys  to  verify
       that they are valid keys.

       MEMCACHED_BEHAVIOR_SORT_HOSTS

       Enabling  this will cause hosts that are added to be placed in the host
       list in sorted order. This will defeat consisten hashing.

       MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT

       In non-blocking mode this changes  the  value  of  the  timeout  during
       socket  connection  in  milliseconds.  Specifying  -1 means an infinite
       time-out.

       MEMCACHED_BEHAVIOR_BINARY_PROTOCOL

       Enable the use of the binary protocol. Please note that you cannot tog-
       gle this flag on an open connection.

       MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT

       Set  this  value  to enable the server be removed after continuous MEM-
       CACHED_BEHAVIOR_SERVER_FAILURE_LIMIT times connection failure.

       MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK

       Set this value to tune the number of messages that may be  sent  before
       libmemcached  should start to automatically drain the input queue. Set-
       ting this value to high, may cause libmemcached to deadlock (trying  to
       send data, but the send will block because the input buffer in the ker-
       nel is full).

       MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK

       Set this value to tune the number of bytes that may be sent before lib-
       memcached  should start to automatically drain the input queue (need at
       least 10 IO requests sent without reading the  input  buffer).  Setting
       this  value to high, may cause libmemcached to deadlock (trying to send
       data, but the send will block because the input buffer in the kernel is
       full).

       MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH

       The  binary protocol works a bit different than the textual protocol in
       that a multiget is implemented as a pipe of single get-operations which
       are  sent  to  the  server in a chunk. If you are using large multigets
       from your application, you may improve the latency of the gets by  set-
       ting  this  value  so you send out the first chunk of requests when you
       hit the specified limit.  It allows the servers to start processing the
       requests  to send the data back while the rest of the requests are cre-
       ated and sent to the server.

       MEMCACHED_BEHAVIOR_NOREPLY

       Set this value to specify that you really don't care about  the  result
       from your storage commands (set, add, replace, append, prepend).

       MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS

       If  you  just  want  "a  poor  mans HA", you may specify the numbers of
       replicas libmemcached should store of each item (on different servers).
       This  replication  does not dedicate certain memcached servers to store
       the replicas in, but instead it will store the replicas  together  with
       all  of  the  other  objects (on the 'n' next servers specified in your
       server list).

       MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ

       Allows randomizing the replica reads starting point. Normally the  read
       is  done  from primary server and in case of miss the read is done from
       primary + 1, then primary + 2 all the way  to  'n'  replicas.  If  this
       option  is set on the starting point of the replica reads is randomized
       between the servers.  This allows distributing read  load  to  multiple
       servers with the expense of more write traffic.

       MEMCACHED_BEHAVIOR_CORK

       This  open  has  been  deprecated  with the behavior now built and used
       appropriately on selected platforms.

       MEMCACHED_BEHAVIOR_KEEPALIVE

       Enable TCP_KEEPALIVE behavior.

       MEMCACHED_BEHAVIOR_KEEPALIVE_IDLE

       Specify time, in seconds, to mark a connection as idle.  This  is  only
       available as an option Linux.

       MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE

       Find  the current size of SO_SNDBUF. A value of 0 means either an error
       occured or no hosts were available. It is safe to assume system default
       if  this  occurs.  If  an  error occurs you can checked the last cached
       errno statement to find the specific error.

       MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE

       Find the current size of SO_RCVBUF. A value of 0 means either an  error
       occured or no hosts were available. It is safe to assume system default
       if this occurs. If an error occurs you  can  checked  the  last  cached
       errno statement to find the specific error.

       MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT

       Deprecated           since          version          0.48:          See
       MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS

       This number of times a host can have an error before it is disabled.


       MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS

       Deprecated          since          version          0.48:           See
       MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS

       If  enabled  any  hosts  which  have  been  flagged as disabled will be
       removed from the list of servers in the  memcached_st  structure.  This
       must   be  used  in  combination  with  MEMCACHED_BEHAVIOR_SERVER_FAIL-
       URE_LIMIT.


       MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS
              If enabled any hosts which have been flagged as disabled will be
              removed from the list of servers in the memcached_st structure.

       MEMCACHED_BEHAVIOR_RETRY_TIMEOUT

       When enabled a host which is problematic will only be checked for usage
       based on the amount of time set by this behavior. The value is in  sec-
       onds.

       MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY

       When  enabled  the prefix key will be added to the key when determining
       server by hash. See MEMCACHED_CALLBACK_NAMESPACE for additional  infor-
       mation.

RETURN
       memcached_behavior_get  returns either the current value of the get, or
       0 or 1 on simple flag behaviors  (1  being  enabled).  memcached_behav-
       ior_set returns failure or success.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+----------------------+
       |ATTRIBUTE TYPE |   ATTRIBUTE VALUE    |
       +---------------+----------------------+
       |Availability   | library/libmemcached |
       +---------------+----------------------+
       |Stability      | Uncommitted          |
       +---------------+----------------------+

NOTES
       memcached_behavior_set in version .17 was changed from taking a pointer
       to data value, to taking a uin64_t.

       Source code for open source software components in Oracle  Solaris  can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This    software    was    built    from    source     available     at
       https://github.com/oracle/solaris-userland.    The  original  community
       source    was    downloaded     from      https://launchpad.net/libmem-
       cached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz.

       Further information about this software can be found on the open source
       community website at http://libmemcached.org/libMemcached.html.

HOME
       To find out more information please check: http://libmemcached.org/

SEE ALSO
       memcached(1) libmemcached(3) memcached_strerror(3)

AUTHOR
       Brian Aker

COPYRIGHT
       2011-2013, Brian Aker DataDifferential, http://datadifferential.com/




1.0.18                         February 09, 2014
                                         MEMCACHED_BEHAVIOR_GET(3libmemcached)