update docs
[m6w6/libmemcached] / libmemcached / memcached_cas.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>Working with data on the server in an atomic fashion &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="Messages and Errors" href="index_errors.html" />
40 <link rel="prev" title="Appending or Prepending to data on the server" href="memcached_append.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"><a class="reference internal" href="memcached_append.html">Appending or Prepending to data on the server</a></li>
100 <li class="toctree-l3 current"><a class="current reference internal" href="#">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>Working with data on the server in an atomic fashion</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="working-with-data-on-the-server-in-an-atomic-fashion">
194 <h1>Working with data on the server in an atomic fashion<a class="headerlink" href="#working-with-data-on-the-server-in-an-atomic-fashion" title="Permalink to this headline"></a></h1>
195 <div class="section" id="synopsis">
196 <span id="index-0"></span><h2>SYNOPSIS<a class="headerlink" href="#synopsis" title="Permalink to this headline"></a></h2>
197 <p>#include &lt;libmemcached/memcached.h&gt;</p>
198 <dl class="function">
199 <dt id="_CPPv413memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t">
200 <span id="_CPPv313memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t"></span><span id="_CPPv213memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t"></span><span id="memcached_cas__memcached_stP.cCP.s.cCP.s.time_t.uint32_t.uint64_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_cas</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>, uint64_t <em>cas</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv413memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="Permalink to this definition"></a><br /></dt>
201 <dd></dd></dl>
202
203 <dl class="function">
204 <dt id="_CPPv420memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t">
205 <span id="_CPPv320memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t"></span><span id="_CPPv220memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t"></span><span id="memcached_cas_by_key__memcached_stP.cCP.s.cCP.s.cCP.s.time_t.uint32_t.uint64_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_cas_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>, uint64_t <em>cas</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv420memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="Permalink to this definition"></a><br /></dt>
206 <dd></dd></dl>
207
208 <p>Compile and link with -lmemcached</p>
209 </div>
210 <div class="section" id="description">
211 <h2>DESCRIPTION<a class="headerlink" href="#description" title="Permalink to this headline"></a></h2>
212 <p><a class="reference internal" href="#_CPPv413memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="memcached_cas"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">memcached_cas()</span></code></a> overwrites data in the server as long as the “cas”
213 value is still the same in the server. You can get the cas value of a result
214 by calling <a class="reference internal" href="memcached_result_st.html#_CPPv420memcached_result_casPK19memcached_result_st" title="memcached_result_cas"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">memcached_result_cas()</span></code></a> on a memcached_result_st(3)
215 structure. At the point that this note was written cas is still buggy in memcached.
216 Turning on tests for it in libmemcached(3) is optional. Please see
217 <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> for information on how to do this.</p>
218 <p><a class="reference internal" href="#_CPPv420memcached_cas_by_keyP12memcached_stPKc6size_tPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="memcached_cas_by_key"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">memcached_cas_by_key()</span></code></a> method behaves in a similar method as the non
219 key methods. The difference is that it uses the group_key parameter
220 to map objects to particular servers.</p>
221 <p><a class="reference internal" href="#_CPPv413memcached_casP12memcached_stPKc6size_tPKc6size_t6time_t8uint32_t8uint64_t" title="memcached_cas"><code class="xref cpp cpp-func docutils literal notranslate"><span class="pre">memcached_cas()</span></code></a> is 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> behavior enabled. However, when using these operations with this behavior
222 on, there are limits to the size of the payload being sent to the server. The
223 reason for these limits is that the Memcached Server does not allow
224 multi-datagram requests and the current server implementation sets a datagram
225 size to 1400 bytes. Due to protocol overhead, the actual limit of the user
226 supplied data is less than 1400 bytes and depends on the protocol in use as,
227 well as the operation being executed. When running with the binary protocol,
228 <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,
229 flags and expiry combined may not exceed 1368 bytes. When running with the
230 ASCII protocol, the exact limit fluctuates depending on which function is
231 being executed and whether the function is a cas operation or not. For
232 non-cas ASCII set operations, there are at least 1335 bytes available to
233 split among the key, key_prefix, and value; for cas ASCII operations there
234 are at least 1318 bytes available to split among the key, key_prefix and value. If the total size of the 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> will be returned.</p>
235 </div>
236 <div class="section" id="return">
237 <h2>RETURN<a class="headerlink" href="#return" title="Permalink to this headline"></a></h2>
238 <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>.
239 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>.
240 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
241 string.</p>
242 </div>
243 <div class="section" id="see-also">
244 <h2>SEE ALSO<a class="headerlink" href="#see-also" title="Permalink to this headline"></a></h2>
245 </div>
246 </div>
247
248
249 </div>
250
251 </div>
252 <footer>
253
254 <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
255
256 <a href="index_errors.html" class="btn btn-neutral float-right" title="Messages and Errors" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
257
258
259 <a href="memcached_append.html" class="btn btn-neutral float-left" title="Appending or Prepending to data on the server" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
260
261 </div>
262
263
264 <hr/>
265
266 <div role="contentinfo">
267 <p>
268 &copy; <a href="../copyright.html">Copyright</a>
269
270 </p>
271 </div>
272 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>.
273
274 </footer>
275
276 </div>
277 </div>
278
279 </section>
280
281 </div>
282
283
284
285 <script type="text/javascript">
286 jQuery(function () {
287 SphinxRtdTheme.Navigation.enable(true);
288 });
289 </script>
290
291
292
293
294
295
296 </body>
297 </html>