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