Merge in main doc trunk.
[awesomized/libmemcached] / docs / memcached_get.rst
1 ===============================
2 Retrieving data from the server
3 ===============================
4
5
6 Get a value
7
8
9 *******
10 LIBRARY
11 *******
12
13
14 C Client Library for memcached (libmemcached, -lmemcached)
15
16
17 --------
18 SYNOPSIS
19 --------
20
21
22
23 .. code-block:: perl
24
25 #include <libmemcached/memcached.h>
26
27 memcached_result_st *
28 memcached_fetch_result (memcached_st *ptr,
29 memcached_result_st *result,
30 memcached_return_t *error);
31
32 char *
33 memcached_get (memcached_st *ptr,
34 const char *key, size_t key_length,
35 size_t *value_length,
36 uint32_t *flags,
37 memcached_return_t *error);
38
39 memcached_return_t
40 memcached_mget (memcached_st *ptr,
41 const char * const *keys,
42 const size_t *key_length,
43 size_t number_of_keys);
44 char *
45 memcached_get_by_key (memcached_st *ptr,
46 const char *master_key, size_t master_key_length,
47 const char *key, size_t key_length,
48 size_t *value_length,
49 uint32_t *flags,
50 memcached_return_t *error);
51
52 memcached_return_t
53 memcached_mget_by_key (memcached_st *ptr,
54 const char *master_key, size_t master_key_length,
55 const char * const *keys,
56 const size_t *key_length,
57 size_t number_of_keys);
58
59 char *
60 memcached_fetch (memcached_st *ptr,
61 char *key, size_t *key_length,
62 size_t *value_length,
63 uint32_t *flags,
64 memcached_return_t *error);
65
66 memcached_return_t
67 memcached_fetch_execute (memcached_st *ptr,
68 memcached_execute_fn *callback,
69 void *context,
70 uint32_t number_of_callbacks);
71
72
73 memcached_return_t
74 memcached_mget_execute (memcached_st *ptr,
75 const char * const *keys,
76 const size_t *key_length,
77 size_t number_of_keys,
78 memcached_execute_fn *callback,
79 void *context,
80 uint32_t number_of_callbacks);
81
82 memcached_return_t
83 memcached_mget_execute_by_key (memcached_st *ptr,
84 const char *master_key,
85 size_t master_key_length,
86 const char * const *keys,
87 const size_t *key_length,
88 size_t number_of_keys,
89 memcached_execute_fn *callback,
90 void *context,
91 uint32_t number_of_callbacks);
92
93
94
95 -----------
96 DESCRIPTION
97 -----------
98
99
100 memcached_get() is used to fetch an individual value from the server. You
101 must pass in a key and its length to fetch the object. You must supply
102 three pointer variables which will give you the state of the returned
103 object. A uint32_t pointer to contain whatever flags you stored with the value,
104 a size_t pointer which will be filled with size of of the object, and a
105 memcached_return_t pointer to hold any error. The object will be returned
106 upon success and NULL will be returned on failure. Any object returned by
107 memcached_get() must be released by the caller application.
108
109 memcached_mget() is used to select multiple keys at once. For multiple key
110 operations it is always faster to use this function. This function always
111 works asynchronously. memcached_fetch() is then used to retrieve any keys
112 found. No error is given on keys that are not found. You must call either
113 memcached_fetch() or memcached_fetch_result() after a successful call to
114 memcached_mget(). You should continue to call these functions until they
115 return NULL (aka no more values). If you need to quit in the middle of a
116 memcached_get() call, execute a memcached_quit(). After you do this, you can
117 issue new queries against the server.
118
119 memcached_fetch() is used to fetch an individual value from the server.
120 memcached_mget() must always be called before using this method. You
121 must pass in a key and its length to fetch the object. You must supply
122 three pointer variables which will give you the state of the returned
123 object. A uint32_t pointer to contain whatever flags you stored with the value,
124 a size_t pointer which will be filled with size of of the object, and a
125 memcached_return_t pointer to hold any error. The object will be returned
126 upon success and NULL will be returned on failure. MEMCACHD_END is returned
127 by the \*error value when all objects that have been found are returned.
128 The final value upon MEMCACHED_END is null. Values returned by
129 memcached_fetch() musted be free'ed by the caller. memcached_fetch() will
130 be DEPRECATED in the near future, memcached_fetch_result() should be used
131 instead.
132
133 memcached_fetch_result() is used to return a memcached_result_st(3) structure
134 from a memcached server. The result object is forward compatible with changes
135 to the server. For more information please refer to the memcached_result_st(3)
136 help. This function will dynamically allocate a result structure for you
137 if you do not pass one to the function.
138
139 memcached_fetch_execute() is a callback function for result sets. Instead
140 of returning the results to you for processing, it passes each of the
141 result sets to the list of functions you provide. It passes to the function
142 a memcached_st that can be cloned for use in the called function (it can not
143 be used directly). It also passes a result set which does not need to be freed.
144 Finally it passes a "context". This is just a pointer to a memory reference
145 you supply the calling function. Currently only one value is being passed
146 to each function call. In the future there will be an option to allow this
147 to be an array.
148
149 memcached_mget_execute() and memcached_mget_execute_by_key() is
150 similar to memcached_mget(), but it may trigger the supplied callbacks
151 with result sets while sending out the queries. If you try to perform
152 a really large multiget with memcached_mget() you may encounter a
153 deadlock in the OS kernel (we fail to write data to the socket because
154 the input buffer is full). memcached_mget_execute() solves this
155 problem by processing some of the results before continuing sending
156 out requests. Please note that this function is only available in the
157 binary protocol.
158
159 memcached_get_by_key() and memcached_mget_by_key() behave in a similar nature
160 as memcached_get() and memcached_mget(). The difference is that they take
161 a master key that is used for determining which server an object was stored
162 if key partitioning was used for storage.
163
164 All of the above functions are not testsed when the \ ``MEMCACHED_BEHAVIOR_USE_UDP``\
165 has been set. Executing any of these functions with this behavior on will result in
166 \ ``MEMCACHED_NOT_SUPPORTED``\ being returned or, for those functions which do not return
167 a \ ``memcached_return_t``\ , the error function parameter will be set to
168 \ ``MEMCACHED_NOT_SUPPORTED``\ .
169
170
171 ******
172 RETURN
173 ******
174
175
176 All objects returned must be freed by the calling application.
177 memcached_get() and memcached_fetch() will return NULL on error. You must
178 look at the value of error to determine what the actual error was.
179
180 MEMCACHED_KEY_TOO_BIG is set to error whenever memcached_fetch() was used
181 and the key was set larger then MEMCACHED_MAX_KEY, which was the largest
182 key allowed for the original memcached ascii server.
183
184
185 ****
186 HOME
187 ****
188
189
190 To find out more information please check:
191 `https://launchpad.net/libmemcached <https://launchpad.net/libmemcached>`_
192
193
194 ******
195 AUTHOR
196 ******
197
198
199 Brian Aker, <brian@tangent.org>
200
201
202 --------
203 SEE ALSO
204 --------
205
206 :manpage:`memcached(1)` :manpage:`libmemcached(3)` :manpage:`memcached_strerror(3)`