update docs
[m6w6/libmemcached] / libmemcached / memcached_append.html
1
2
3 <!DOCTYPE html>
4 <html class="writer-html5" lang="en" >
5 <head>
6 <meta charset="utf-8">
7
8 <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
10 <title>Appending or Prepending Data &mdash; libmemcached 1.0.99 documentation</title>
11
12
13
14 <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
15 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
16
17
18
19
20
21
22
23 <!--[if lt IE 9]>
24 <script src="../_static/js/html5shiv.min.js"></script>
25 <![endif]-->
26
27
28 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
29 <script src="../_static/jquery.js"></script>
30 <script src="../_static/underscore.js"></script>
31 <script src="../_static/doctools.js"></script>
32 <script src="../_static/language_data.js"></script>
33
34 <script type="text/javascript" src="../_static/js/theme.js"></script>
35
36
37 <link rel="index" title="Index" href="../genindex.html" />
38 <link rel="search" title="Search" href="../search.html" />
39 <link rel="copyright" title="Copyright" href="../copyright.html" />
40 <link rel="next" title="Working with data on the server in an atomic fashion" href="memcached_cas.html" />
41 <link rel="prev" title="Working with result sets" href="memcached_result_st.html" />
42 </head>
43
44 <body class="wy-body-for-nav">
45
46
47 <div class="wy-grid-for-nav">
48
49 <nav data-toggle="wy-nav-shift" class="wy-nav-side">
50 <div class="wy-side-scroll">
51 <div class="wy-side-nav-search" >
52
53
54
55 <a href="../index.html" class="icon icon-home" alt="Documentation Home"> libmemcached
56
57
58
59 </a>
60
61
62
63
64 <div class="version">
65 1.0
66 </div>
67
68
69
70
71 <div role="search">
72 <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
73 <input type="text" name="q" placeholder="Search docs" />
74 <input type="hidden" name="check_keywords" value="yes" />
75 <input type="hidden" name="area" value="default" />
76 </form>
77 </div>
78
79
80 </div>
81
82
83 <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
84
85
86
87
88
89
90 <p class="caption"><span class="caption-text">libmemcached</span></p>
91 <ul class="current">
92 <li class="toctree-l1"><a class="reference internal" href="../libmemcached.html">Introduction</a></li>
93 <li class="toctree-l1 current"><a class="reference internal" href="index.html">libmemcached API</a><ul class="current">
94 <li class="toctree-l2"><a class="reference internal" href="index_basics.html">Basics</a></li>
95 <li class="toctree-l2 current"><a class="reference internal" href="index_data.html">Working with Data</a><ul class="current">
96 <li class="toctree-l3"><a class="reference internal" href="memcached_auto.html">Incrementing and Decrementing Values</a></li>
97 <li class="toctree-l3"><a class="reference internal" href="memcached_exist.html">Determine if a keys exists</a></li>
98 <li class="toctree-l3"><a class="reference internal" href="memcached_touch.html">Update expiration on a key</a></li>
99 <li class="toctree-l3"><a class="reference internal" href="memcached_flush_buffers.html">Flush and send buffered commands</a></li>
100 <li class="toctree-l3"><a class="reference internal" href="memcached_result_st.html">Working with result sets</a></li>
101 <li class="toctree-l3 current"><a class="current reference internal" href="#">Appending or Prepending Data</a></li>
102 <li class="toctree-l3"><a class="reference internal" href="memcached_cas.html">Working with data on the server in an atomic fashion</a></li>
103 </ul>
104 </li>
105 <li class="toctree-l2"><a class="reference internal" href="index_errors.html">Messages and Errors</a></li>
106 <li class="toctree-l2"><a class="reference internal" href="index_advanced.html">Advanced Topics</a></li>
107 <li class="toctree-l2"><a class="reference internal" href="index_deprecated.html">Deprecated Functionality</a></li>
108 </ul>
109 </li>
110 <li class="toctree-l1"><a class="reference internal" href="index_misc.html">Misc</a></li>
111 </ul>
112 <p class="caption"><span class="caption-text">libmemcachedutil</span></p>
113 <ul>
114 <li class="toctree-l1"><a class="reference internal" href="../libmemcachedutil.html">Introduction</a></li>
115 <li class="toctree-l1"><a class="reference internal" href="../libmemcachedutil/index.html">libmemcachedutil API</a></li>
116 </ul>
117 <p class="caption"><span class="caption-text">libhashkit</span></p>
118 <ul>
119 <li class="toctree-l1"><a class="reference internal" href="../libhashkit.html">Introduction</a></li>
120 <li class="toctree-l1"><a class="reference internal" href="../libhashkit/index.html">libhashkit API</a></li>
121 </ul>
122 <p class="caption"><span class="caption-text">Client Applications</span></p>
123 <ul>
124 <li class="toctree-l1"><a class="reference internal" href="../bin/index.html">Client Applications</a></li>
125 </ul>
126 <p class="caption"><span class="caption-text">Copyright</span></p>
127 <ul>
128 <li class="toctree-l1"><a class="reference internal" href="../copyright.html">Copyright</a></li>
129 </ul>
130
131
132
133 </div>
134
135 </div>
136 </nav>
137
138 <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
139
140
141 <nav class="wy-nav-top" aria-label="top navigation">
142
143 <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
144 <a href="../index.html">libmemcached</a>
145
146 </nav>
147
148
149 <div class="wy-nav-content">
150
151 <div class="rst-content">
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169 <div role="navigation" aria-label="breadcrumbs navigation">
170
171 <ul class="wy-breadcrumbs">
172
173 <li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
174
175 <li><a href="index.html">libmemcached API</a> &raquo;</li>
176
177 <li><a href="index_data.html">Working with Data</a> &raquo;</li>
178
179 <li>Appending or Prepending Data</li>
180
181
182 <li class="wy-breadcrumbs-aside">
183
184
185
186 </li>
187
188 </ul>
189
190
191 <hr/>
192 </div>
193 <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
194 <div itemprop="articleBody">
195
196 <div class="section" id="appending-or-prepending-data">
197 <h1>Appending or Prepending Data<a class="headerlink" href="#appending-or-prepending-data" title="Permalink to this headline"></a></h1>
198 <div class="section" id="synopsis">
199 <h2>SYNOPSIS<a class="headerlink" href="#synopsis" title="Permalink to this headline"></a></h2>
200 <dl class="simple">
201 <dt>#include &lt;libmemcached-1.0/memcached.h&gt;</dt><dd><p>Compile and link with -lmemcached</p>
202 </dd>
203 </dl>
204 <dl class="cpp function">
205 <dt id="_CPPv417memcached_prependP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t">
206 <span id="_CPPv317memcached_prependP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t"></span><span id="_CPPv217memcached_prependP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t"></span><span id="memcached_prepend__memcached_stP.cCP.s.cCP.s.time_t.uint32_t"></span><a class="reference internal" href="memcached_return_t.html#_CPPv418memcached_return_t" title="memcached_return_t">memcached_return_t</a> <code class="sig-name descname">memcached_prepend</code><span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *<em>ptr</em>, <em class="property">const</em> char *<em>key</em>, size_t <em>key_length</em>, <em class="property">const</em> char *<em>value</em>, size_t <em>value_length</em>, time_t <em>expiration</em>, uint32_t <em>flags</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv417memcached_prependP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t" title="Permalink to this definition"></a><br /></dt>
207 <dd></dd></dl>
208
209 <dl class="cpp function">
210 <dt id="_CPPv416memcached_appendP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t">
211 <span id="_CPPv316memcached_appendP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t"></span><span id="_CPPv216memcached_appendP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t"></span><span id="memcached_append__memcached_stP.cCP.s.cCP.s.time_t.uint32_t"></span><a class="reference internal" href="memcached_return_t.html#_CPPv418memcached_return_t" title="memcached_return_t">memcached_return_t</a> <code class="sig-name descname">memcached_append</code><span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *<em>ptr</em>, <em class="property">const</em> char *<em>key</em>, size_t <em>key_length</em>, <em class="property">const</em> char *<em>value</em>, size_t <em>value_length</em>, time_t <em>expiration</em>, uint32_t <em>flags</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv416memcached_appendP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t" title="Permalink to this definition"></a><br /></dt>
212 <dd></dd></dl>
213
214 <dl class="cpp function">
215 <dt id="_CPPv424memcached_prepend_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t">
216 <span id="_CPPv324memcached_prepend_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t"></span><span id="_CPPv224memcached_prepend_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t"></span><span id="memcached_prepend_by_key__memcached_stP.cCP.s.cCP.s.cCP.s.time_t.uint32_t"></span><a class="reference internal" href="memcached_return_t.html#_CPPv418memcached_return_t" title="memcached_return_t">memcached_return_t</a> <code class="sig-name descname">memcached_prepend_by_key</code><span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *<em>ptr</em>, <em class="property">const</em> char *<em>group_key</em>, size_t <em>group_key_length</em>, <em class="property">const</em> char *<em>key</em>, size_t <em>key_length</em>, <em class="property">const</em> char *<em>value</em>, size_t <em>value_length</em>, time_t <em>expiration</em>, uint32_t <em>flags</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv424memcached_prepend_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t" title="Permalink to this definition"></a><br /></dt>
217 <dd></dd></dl>
218
219 <dl class="cpp function">
220 <dt id="_CPPv423memcached_append_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t">
221 <span id="_CPPv323memcached_append_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t"></span><span id="_CPPv223memcached_append_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t"></span><span id="memcached_append_by_key__memcached_stP.cCP.s.cCP.s.cCP.s.time_t.uint32_t"></span><a class="reference internal" href="memcached_return_t.html#_CPPv418memcached_return_t" title="memcached_return_t">memcached_return_t</a> <code class="sig-name descname">memcached_append_by_key</code><span class="sig-paren">(</span><a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st">memcached_st</a> *<em>ptr</em>, <em class="property">const</em> char *<em>group_key</em>, size_t <em>group_key_length</em>, <em class="property">const</em> char *<em>key</em>, size_t <em>key_length</em>, <em class="property">const</em> char *<em>value</em>, size_t <em>value_length</em>, time_t <em>expiration</em>, uint32_t <em>flags</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv423memcached_append_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t" title="Permalink to this definition"></a><br /></dt>
222 <dd><dl class="field-list simple">
223 <dt class="field-odd">Parameters</dt>
224 <dd class="field-odd"><ul class="simple">
225 <li><p><strong>ptr</strong> -- pointer to an initialized <a class="reference internal" href="memcached_create.html#_CPPv412memcached_st" title="memcached_st"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_st</span></code></a> struct</p></li>
226 <li><p><strong>group_key</strong> -- key namespace</p></li>
227 <li><p><strong>group_key_length</strong> -- length of the key namespace without any terminating zero</p></li>
228 <li><p><strong>key</strong> -- the key</p></li>
229 <li><p><strong>key_length</strong> -- length of the key without any terminating zero</p></li>
230 <li><p><strong>value</strong> -- the value to append/prepend</p></li>
231 <li><p><strong>value_length</strong> -- the length of the value without any terminating zero</p></li>
232 <li><p><strong>expiration</strong> -- expiration as a unix timestamp or as relative expiration time in seconds</p></li>
233 <li><p><strong>flags</strong> -- 16 bit flags</p></li>
234 </ul>
235 </dd>
236 <dt class="field-even">Returns</dt>
237 <dd class="field-even"><p><a class="reference internal" href="memcached_return_t.html#_CPPv418memcached_return_t" title="memcached_return_t"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_return_t</span></code></a> indicating success</p>
238 </dd>
239 </dl>
240 </dd></dl>
241
242 </div>
243 <div class="section" id="description">
244 <h2>DESCRIPTION<a class="headerlink" href="#description" title="Permalink to this headline"></a></h2>
245 <p><a class="reference internal" href="#_CPPv417memcached_prependP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t" title="memcached_prepend"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_prepend()</span></code></a> and memcached_append are used to modify information on a
246 server. All methods take a <code class="docutils literal notranslate"><span class="pre">key</span></code>, and <code class="docutils literal notranslate"><span class="pre">key_length</span></code> to store the object. Keys
247 are currently limited to 250 characters when using either a version of memcached
248 which is 1.4 or below, or when using the text protocol. You must supply both a
249 value and a length. Optionally you may set an expiration time for the object
250 and a 16 bit value (it is meant to be used as a bitmap). <code class="docutils literal notranslate"><span class="pre">flags</span></code> is a 4 byte
251 space that is stored along the main value. Many sub libraries make use of
252 this field, so in most cases users should avoid making use of it.</p>
253 <p><a class="reference internal" href="#_CPPv417memcached_prependP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t" title="memcached_prepend"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_prepend()</span></code></a> places a segment of data before the last piece of data
254 stored. Currently expiration and key are not used in the server.</p>
255 <p><a class="reference internal" href="#_CPPv416memcached_appendP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t" title="memcached_append"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_append()</span></code></a> places a segment of data at the end of the last piece of data
256 stored. Currently expiration and key are not used in the server.</p>
257 <p><a class="reference internal" href="#_CPPv424memcached_prepend_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t" title="memcached_prepend_by_key"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_prepend_by_key()</span></code></a> and <a class="reference internal" href="#_CPPv423memcached_append_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t" title="memcached_append_by_key"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_append_by_key()</span></code></a> methods both behave in
258 a similar manner as the non key methods. The difference is that they use their
259 group_key parameter to map objects to particular servers.</p>
260 <p>If you are looking for performance, <a class="reference internal" href="memcached_set.html#_CPPv413memcached_setP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t" title="memcached_set"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_set()</span></code></a> with non-blocking IO is the
261 fastest way to store data on the server.</p>
262 <p>All of the above functions are tested with the <a class="reference internal" href="memcached_behavior.html#_CPPv4N20memcached_behavior_t26MEMCACHED_BEHAVIOR_USE_UDPE" title="MEMCACHED_BEHAVIOR_USE_UDP"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">MEMCACHED_BEHAVIOR_USE_UDP</span></code></a>
263 behavior enabled. However, when using these operations with this behavior on,
264 there are limits to the size of the payload being sent to the server. The
265 reason for these limits is that the Memcached Server does not allow
266 multi-datagram requests and the current server implementation sets a datagram
267 size to 1400 bytes. Due to protocol overhead, the actual limit of the user
268 supplied data is less than 1400 bytes and depends on the protocol in use as,
269 well as the operation being executed. When running with the binary protocol,
270 <a class="reference internal" href="memcached_behavior.html#_CPPv4N20memcached_behavior_t34MEMCACHED_BEHAVIOR_BINARY_PROTOCOLE" title="MEMCACHED_BEHAVIOR_BINARY_PROTOCOL"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">MEMCACHED_BEHAVIOR_BINARY_PROTOCOL</span></code></a>, the size of the key,value, flags and
271 expiry combined may not exceed 1368 bytes. When running with the ASCII protocol,
272 the exact limit fluctuates depending on which function is being executed and
273 whether the function is a cas operation or not. For non-cas ASCII set
274 operations, there are at least 1335 bytes available to split among the key,
275 key_prefix, and value; for cas ASCII operations there are at least 1318 bytes
276 available to split among the key, key_prefix and value. If the total size of the
277 command, including overhead, exceeds 1400 bytes, a <a class="reference internal" href="memcached_return_t.html#_CPPv4N18memcached_return_t23MEMCACHED_WRITE_FAILUREE" title="MEMCACHED_WRITE_FAILURE"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">MEMCACHED_WRITE_FAILURE</span></code></a>
278 will be returned.</p>
279 </div>
280 <div class="section" id="return-value">
281 <h2>RETURN VALUE<a class="headerlink" href="#return-value" title="Permalink to this headline"></a></h2>
282 <p>All methods return a value of type <a class="reference internal" href="memcached_return_t.html#_CPPv418memcached_return_t" title="memcached_return_t"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_return_t</span></code></a>. On success the value
283 will be <a class="reference internal" href="memcached_return_t.html#_CPPv4N18memcached_return_t17MEMCACHED_SUCCESSE" title="MEMCACHED_SUCCESS"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">MEMCACHED_SUCCESS</span></code></a>.</p>
284 <p>Use <a class="reference internal" href="memcached_strerror.html#_CPPv418memcached_strerrorP12memcached_st18memcached_return_t" title="memcached_strerror"><code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">memcached_strerror()</span></code></a> to translate this value to a printable string.</p>
285 </div>
286 <div class="section" id="see-also">
287 <h2>SEE ALSO<a class="headerlink" href="#see-also" title="Permalink to this headline"></a></h2>
288 <ul class="simple">
289 <li><p><em class="manpage"><a class="manpage reference external" href="https://linux.die.net/man/1/memcached">memcached(1)</a></em></p></li>
290 <li><p><a class="reference internal" href="../libmemcached.html"><span class="doc">C/C++ Client Library for memcached</span></a></p></li>
291 <li><p><a class="reference internal" href="memcached_set.html"><span class="doc">Storing data on the server</span></a></p></li>
292 <li><p><a class="reference internal" href="memcached_cas.html"><span class="doc">Working with data on the server in an atomic fashion</span></a></p></li>
293 <li><p><a class="reference internal" href="memcached_strerror.html"><span class="doc">Converting Error Codes to Messages</span></a></p></li>
294 </ul>
295 </div>
296 </div>
297
298
299 </div>
300
301 </div>
302 <footer>
303
304 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
305
306 <a href="memcached_cas.html" class="btn btn-neutral float-right" title="Working with data on the server in an atomic fashion" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
307
308
309 <a href="memcached_result_st.html" class="btn btn-neutral float-left" title="Working with result sets" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
310
311 </div>
312
313
314 <hr/>
315
316 <div role="contentinfo">
317 <p>
318
319
320 &copy; <a href="../copyright.html">Copyright</a>
321
322 </p>
323 </div>
324
325
326
327 Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
328
329 <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
330
331 provided by <a href="https://readthedocs.org">Read the Docs</a>.
332
333 </footer>
334
335 </div>
336 </div>
337
338 </section>
339
340 </div>
341
342
343 <script type="text/javascript">
344 jQuery(function () {
345 SphinxRtdTheme.Navigation.enable(true);
346 });
347 </script>
348
349
350
351
352
353
354 </body>
355 </html>