| 1 | =head1 NAME |
|---|
| 2 | |
|---|
| 3 | memcached_behavior_get memcached_behavior_set |
|---|
| 4 | |
|---|
| 5 | =head1 LIBRARY |
|---|
| 6 | |
|---|
| 7 | C Client Library for memcached (libmemcached, -lmemcached) |
|---|
| 8 | |
|---|
| 9 | =head1 SYNOPSIS |
|---|
| 10 | |
|---|
| 11 | #include <memcached.h> |
|---|
| 12 | |
|---|
| 13 | uint64_t |
|---|
| 14 | memcached_behavior_get (memcached_st *ptr, |
|---|
| 15 | memcached_behavior flag); |
|---|
| 16 | |
|---|
| 17 | memcached_return |
|---|
| 18 | memcached_behavior_set (memcached_st *ptr, |
|---|
| 19 | memcached_behavior flag, |
|---|
| 20 | uint64_t data); |
|---|
| 21 | |
|---|
| 22 | =head1 DESCRIPTION |
|---|
| 23 | |
|---|
| 24 | libmemcached(3) behavior can be modified by use memcached_behavior_set(). |
|---|
| 25 | Default behavior is the library strives to be quick and accurate. Some |
|---|
| 26 | behavior, while being faster, can also result in not entirely accurate |
|---|
| 27 | behavior (for instance, memcached_set() will always respond with |
|---|
| 28 | C<MEMCACHED_SUCCESS>). |
|---|
| 29 | |
|---|
| 30 | memcached_behavior_get() takes a behavior flag and returns whether or not |
|---|
| 31 | that behavior is currently enabled in the client. |
|---|
| 32 | |
|---|
| 33 | memcached_behavior_set() changes the value of a particular option of the |
|---|
| 34 | client. It takes both a flag (listed below) and a value. For simple on or |
|---|
| 35 | off options you just need to pass in a value of 1. Calls to |
|---|
| 36 | memcached_behavior_set() will flush and reset all connections. |
|---|
| 37 | |
|---|
| 38 | =over 4 |
|---|
| 39 | |
|---|
| 40 | =item MEMCACHED_BEHAVIOR_NO_BLOCK |
|---|
| 41 | |
|---|
| 42 | Causes libmemcached(3) to use asychronous IO. This is the fastest transport |
|---|
| 43 | available for storage functions. For read operations it is currently |
|---|
| 44 | similar in performance to the non-blocking method (this is being |
|---|
| 45 | looked into). |
|---|
| 46 | |
|---|
| 47 | =item MEMCACHED_BEHAVIOR_SND_TIMEOUT |
|---|
| 48 | |
|---|
| 49 | This sets the microsecond behavior of the socket against the SO_SNDTIMEO flag. |
|---|
| 50 | In cases where you cannot use non-blocking IO this will allow you to still have |
|---|
| 51 | timeouts on the sending of data. |
|---|
| 52 | |
|---|
| 53 | =item MEMCACHED_BEHAVIOR_RCV_TIMEOUT |
|---|
| 54 | |
|---|
| 55 | This sets the microsecond behavior of the socket against the SO_RCVTIMEO flag. |
|---|
| 56 | In cases where you cannot use non-blocking IO this will allow you to still have |
|---|
| 57 | timeouts on the reading of data. |
|---|
| 58 | |
|---|
| 59 | =item MEMCACHED_BEHAVIOR_TCP_NODELAY |
|---|
| 60 | |
|---|
| 61 | Turns on the no-delay feature for connecting sockets (may be faster in some |
|---|
| 62 | environments). |
|---|
| 63 | |
|---|
| 64 | =item MEMCACHED_BEHAVIOR_HASH |
|---|
| 65 | |
|---|
| 66 | Makes the default hashing algorithm for keys use MD5. The value can be set |
|---|
| 67 | to either MEMCACHED_HASH_DEFAULT, MEMCACHED_HASH_MD5, MEMCACHED_HASH_CRC, MEMCACHED_HASH_FNV1_64, MEMCACHED_HASH_FNV1A_64, MEMCACHED_HASH_FNV1_32, MEMCACHED_HASH_FNV1A_32, MEMCACHED_HASH_JENKINS, MEMCACHED_HASH_HSIEH, and MEMCACHED_HASH_MURMUR. |
|---|
| 68 | Each hash has it's advantages and it's weaknesses. If you dont know or dont care, just go with the default. |
|---|
| 69 | |
|---|
| 70 | =item MEMCACHED_BEHAVIOR_DISTRIBUTION |
|---|
| 71 | |
|---|
| 72 | Using this you can enable different means of distributing values to servers. |
|---|
| 73 | The default method is MEMCACHED_DISTRIBUTION_MODULA. You can enable |
|---|
| 74 | consistent hashing by setting MEMCACHED_DISTRIBUTION_CONSISTENT. |
|---|
| 75 | Consistent hashing delivers better distribution and allows servers to be |
|---|
| 76 | added to the cluster with minimal cache losses. Currently |
|---|
| 77 | MEMCACHED_DISTRIBUTION_CONSISTENT is an alias for the value |
|---|
| 78 | MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA. |
|---|
| 79 | |
|---|
| 80 | =item MEMCACHED_BEHAVIOR_CACHE_LOOKUPS |
|---|
| 81 | |
|---|
| 82 | Memcached can cache named lookups so that DNS lookups are made only once. |
|---|
| 83 | |
|---|
| 84 | =item MEMCACHED_BEHAVIOR_SUPPORT_CAS |
|---|
| 85 | |
|---|
| 86 | Support CAS operations (this is not enabled by default at this point in the server since it imposes a slight performance penalty). |
|---|
| 87 | |
|---|
| 88 | =item MEMCACHED_BEHAVIOR_KETAMA |
|---|
| 89 | |
|---|
| 90 | Sets the default distribution to MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA |
|---|
| 91 | and the hash to MEMCACHED_HASH_MD5. |
|---|
| 92 | |
|---|
| 93 | =item MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED |
|---|
| 94 | |
|---|
| 95 | Sets the default distribution to MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA with the weighted support. |
|---|
| 96 | and the hash to MEMCACHED_HASH_MD5. |
|---|
| 97 | |
|---|
| 98 | =item MEMCACHED_BEHAVIOR_KETAMA_HASH |
|---|
| 99 | |
|---|
| 100 | Sets the hashing algorithm for host mapping on continuum. The value can be set |
|---|
| 101 | to either MEMCACHED_HASH_DEFAULT, MEMCACHED_HASH_MD5, MEMCACHED_HASH_CRC, MEMCACHED_HASH_FNV1_64, MEMCACHED_HASH_FNV1A_64, MEMCACHED_HASH_FNV1_32, and MEMCACHED_HASH_FNV1A_32. |
|---|
| 102 | |
|---|
| 103 | =item MEMCACHED_BEHAVIOR_POLL_TIMEOUT |
|---|
| 104 | |
|---|
| 105 | Modify the timeout value that is used by poll(). The default value is -1. An signed int pointer must be passed to memcached_behavior_set() to change this value. For memcached_behavior_get() a signed int value will be cast and returned as the unsigned long long. |
|---|
| 106 | |
|---|
| 107 | =item MEMCACHED_BEHAVIOR_USER_DATA |
|---|
| 108 | |
|---|
| 109 | This allows you to store a pointer to a specifc piece of data. This can be |
|---|
| 110 | retrieved from inside of memcached_fetch_execute(). Cloning a memcached_st |
|---|
| 111 | |
|---|
| 112 | will copy the pointer to the clone. This was deprecated in 0.14 in favor |
|---|
| 113 | of memcached_callback_set(3). This will be removed in 0.15. |
|---|
| 114 | |
|---|
| 115 | =item MEMCACHED_BEHAVIOR_BUFFER_REQUESTS |
|---|
| 116 | |
|---|
| 117 | Enabling buffered IO causes commands to "buffer" instead of being sent. Any |
|---|
| 118 | action that gets data causes this buffer to be be sent to the remote |
|---|
| 119 | connection. Quiting the connection or closing down the connection will also |
|---|
| 120 | cause the buffered data to be pushed to the remote connection. |
|---|
| 121 | |
|---|
| 122 | =item MEMCACHED_BEHAVIOR_VERIFY_KEY |
|---|
| 123 | |
|---|
| 124 | Enabling this will cause libmemcached(3) to test all keys to verify that they |
|---|
| 125 | are valid keys. |
|---|
| 126 | |
|---|
| 127 | =item MEMCACHED_BEHAVIOR_SORT_HOSTS |
|---|
| 128 | |
|---|
| 129 | Enabling this will cause hosts that are added to be placed in the host list in |
|---|
| 130 | sorted order. This will defeat consisten hashing. |
|---|
| 131 | |
|---|
| 132 | =item MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT |
|---|
| 133 | |
|---|
| 134 | In non-blocking mode this changes the value of the timeout during socket |
|---|
| 135 | connection. |
|---|
| 136 | |
|---|
| 137 | =item MEMCACHED_BEHAVIOR_BINARY_PROTOCOL |
|---|
| 138 | |
|---|
| 139 | Enable the use of the binary protocol. Please note that you cannot toggle |
|---|
| 140 | this flag on an open connection. |
|---|
| 141 | |
|---|
| 142 | =item MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT |
|---|
| 143 | |
|---|
| 144 | Set this value to enable the server be removed after continuous MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT |
|---|
| 145 | times connection failure. |
|---|
| 146 | |
|---|
| 147 | =item MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK |
|---|
| 148 | |
|---|
| 149 | Set this value to tune the number of messages that may be sent before |
|---|
| 150 | libmemcached should start to automatically drain the input queue. Setting |
|---|
| 151 | this value to high, may cause libmemcached to deadlock (trying to send data, |
|---|
| 152 | but the send will block because the input buffer in the kernel is full). |
|---|
| 153 | |
|---|
| 154 | =item MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK |
|---|
| 155 | |
|---|
| 156 | Set this value to tune the number of bytes that may be sent before |
|---|
| 157 | libmemcached should start to automatically drain the input queue (need |
|---|
| 158 | at least 10 IO requests sent without reading the input buffer). Setting |
|---|
| 159 | this value to high, may cause libmemcached to deadlock (trying to send |
|---|
| 160 | data, but the send will block because the input buffer in the kernel is full). |
|---|
| 161 | |
|---|
| 162 | =back |
|---|
| 163 | |
|---|
| 164 | =head1 RETURN |
|---|
| 165 | |
|---|
| 166 | memcached_behavior_get() returns either the current value of the get, or 0 |
|---|
| 167 | or 1 on simple flag behaviors (1 being enabled). memcached_behavior_set() |
|---|
| 168 | returns failure or success. |
|---|
| 169 | |
|---|
| 170 | =head1 NOTES |
|---|
| 171 | |
|---|
| 172 | memcached_behavior_set() in version .17 was changed from taking a pointer |
|---|
| 173 | to data value, to taking a uin64_t. |
|---|
| 174 | |
|---|
| 175 | =head1 HOME |
|---|
| 176 | |
|---|
| 177 | To find out more information please check: |
|---|
| 178 | L<http://tangent.org/552/libmemcached.html> |
|---|
| 179 | |
|---|
| 180 | =head1 AUTHOR |
|---|
| 181 | |
|---|
| 182 | Brian Aker, E<lt>brian@tangent.orgE<gt> |
|---|
| 183 | |
|---|
| 184 | =head1 SEE ALSO |
|---|
| 185 | |
|---|
| 186 | memcached(1) libmemcached(3) memcached_strerror(3) |
|---|
| 187 | |
|---|
| 188 | =cut |
|---|
| 189 | |
|---|