dc26fe56c74ff98959b4dc8d1b89e17c5404354e
[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 Data &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 Data</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 Data</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-data">
194 <h1>Appending or Prepending Data<a class="headerlink" href="#appending-or-prepending-data" title="Permalink to this headline"></a></h1>
195 <div class="section" id="synopsis">
196 <h2>SYNOPSIS<a class="headerlink" href="#synopsis" title="Permalink to this headline"></a></h2>
197 <dl class="simple">
198 <dt>#include &lt;libmemcached-1.0/memcached.h&gt;</dt><dd><p>Compile and link with -lmemcached</p>
199 </dd>
200 </dl>
201 <dl class="function">
202 <dt id="_CPPv417memcached_prependP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t">
203 <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>
204 <dd></dd></dl>
205
206 <dl class="function">
207 <dt id="_CPPv416memcached_appendP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t">
208 <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>
209 <dd></dd></dl>
210
211 <dl class="function">
212 <dt id="_CPPv424memcached_prepend_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t">
213 <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>
214 <dd></dd></dl>
215
216 <dl class="function">
217 <dt id="_CPPv423memcached_append_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t">
218 <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>
219 <dd></dd></dl>
220
221 </div>
222 <div class="section" id="description">
223 <h2>DESCRIPTION<a class="headerlink" href="#description" title="Permalink to this headline"></a></h2>
224 <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
225 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
226 are currently limited to 250 characters when using either a version of memcached
227 which is 1.4 or below, or when using the text protocol. You must supply both a
228 value and a length. Optionally you may test an expiration time for the object
229 and a 16 byte value (it is meant to be used as a bitmap). <code class="docutils literal notranslate"><span class="pre">flags</span></code> is a 4byte
230 space that is stored alongside of the main value. Many sub libraries make use of
231 this field, 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-any docutils literal notranslate"><span class="pre">memcached_prepend()</span></code></a> places a segment of data before the last piece of data
233 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-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
235 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-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
237 a similar method as the non key methods. The difference is that they use their
238 group_key parameter to map objects to particular servers.</p>
239 <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
240 fastest way to store data on the server.</p>
241 <p>All of the above functions are tested with the <code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">MEMCACHED_BEHAVIOR_USE_UDP</span></code>
242 behavior enabled. However, when using these operations with this behavior on,
243 there are limits to the size of the payload being sent to the server. The
244 reason for these limits is that the Memcached Server does not allow
245 multi-datagram requests and the current server implementation sets a datagram
246 size to 1400 bytes. Due to protocol overhead, the actual limit of the user
247 supplied data is less than 1400 bytes and depends on the protocol in use as,
248 well as the operation being executed. When running with the binary protocol,
249 <code class="xref cpp cpp-any docutils literal notranslate"><span class="pre">MEMCACHED_BEHAVIOR_BINARY_PROTOCOL</span></code>, the size of the key,value, flags and
250 expiry combined may not exceed 1368 bytes. When running with the ASCII protocol,
251 the exact limit fluctuates depending on which function is being executed and
252 whether the function is a cas operation or not. For non-cas ASCII set
253 operations, there are at least 1335 bytes available to split among the key,
254 key_prefix, and value; for cas ASCII operations there are at least 1318 bytes
255 available to split among the key, key_prefix and value. If the total size of the
256 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>
257 will be returned.</p>
258 </div>
259 <div class="section" id="return-value">
260 <h2>RETURN VALUE<a class="headerlink" href="#return-value" title="Permalink to this headline"></a></h2>
261 <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
262 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>
263 <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>
264 </div>
265 <div class="section" id="see-also">
266 <h2>SEE ALSO<a class="headerlink" href="#see-also" title="Permalink to this headline"></a></h2>
267 <ul class="simple">
268 <li><p><em class="manpage"><a class="manpage reference external" href="http://man7.org/linux/man-pages/man1/memcached.1.html">memcached(1)</a></em></p></li>
269 <li><p><a class="reference internal" href="../libmemcached.html"><span class="doc">C/C++ Client Library for memcached</span></a></p></li>
270 <li><p><a class="reference internal" href="memcached_set.html"><span class="doc">Storing data on the server</span></a></p></li>
271 <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>
272 <li><p><a class="reference internal" href="memcached_strerror.html"><span class="doc">Converting Error Codes to Messages</span></a></p></li>
273 </ul>
274 </div>
275 </div>
276
277
278 </div>
279
280 </div>
281 <footer>
282
283 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
284
285 <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>
286
287
288 <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>
289
290 </div>
291
292
293 <hr/>
294
295 <div role="contentinfo">
296 <p>
297 &copy; <a href="../copyright.html">Copyright</a>
298
299 </p>
300 </div>
301 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>.
302
303 </footer>
304
305 </div>
306 </div>
307
308 </section>
309
310 </div>
311
312
313
314 <script type="text/javascript">
315 jQuery(function () {
316 SphinxRtdTheme.Navigation.enable(true);
317 });
318 </script>
319
320
321
322
323
324
325 </body>
326 </html>