.\" Man page generated from reStructuredText. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "LIBMEMCACHED_EXAMPLES" "3" "May 01, 2024" "1.1" "libmemcached-awesome" .SH NAME libmemcached_examples \- libmemcached Documentation .sp Examples for libmemcached .SH DESCRIPTION .sp For full examples, test cases are found in tests/*.c in the main distribution. These are always up to date, and are used for each test run of the library. .SH CONNECTING TO SERVERS .INDENT 0.0 .INDENT 3.5 .sp .EX const char *config_string = \(dq\-\-SERVER=host10.example.com \(dq \(dq\-\-SERVER=host11.example.com \(dq \(dq\-\-SERVER=host10.example.com\(dq; memcached_st *memc= memcached(config_string, strlen(config_string); { // ... } memcached_free(memc); .EE .UNINDENT .UNINDENT .sp In the above code you create a \X'tty: link #_CPPv412memcached_st'\fI\%memcached_st\fP\X'tty: link' object with three server by making use of \X'tty: link #_CPPv416memcached_createP12memcached_st'\fI\%memcached_create()\fP\X'tty: link'\&. .SH CREATING A POOL OF SERVERS .INDENT 0.0 .INDENT 3.5 .sp .EX const char *config_string = \(dq\-\-SERVER=host10.example.com \(dq \(dq\-\-SERVER=host11.example.com \(dq \(dq\-\-SERVER=host10.example.com\(dq; memcached_pool_st* pool= memcached_pool(config_string, strlen(config_string)); memcached_return_t rc; memcached_st *memc= memcached_pool_pop(pool, false, &rc); // .... do work /* Release the memc_ptr that was pulled from the pool */ memcached_pool_push(pool, memc); /* Destroy the pool. */ memcached_pool_destroy(pool); .EE .UNINDENT .UNINDENT .sp In the above code you create a \X'tty: link #_CPPv417memcached_pool_st'\fI\%memcached_pool_st\fP\X'tty: link' object with three server by making use of \X'tty: link #_CPPv414memcached_poolPKc6size_t'\fI\%memcached_pool()\fP\X'tty: link'\&. .sp When \X'tty: link #_CPPv422memcached_pool_destroyP17memcached_pool_st'\fI\%memcached_pool_destroy()\fP\X'tty: link' all memory will be released that is associated with the pool. .SH ADDING A VALUE TO THE SERVER .INDENT 0.0 .INDENT 3.5 .sp .EX char *key= \(dqfoo\(dq; char *value= \(dqvalue\(dq; time_t expires = 0; uint32_t flags = 0; memcached_return_t rc = memcached_set(memc, key, strlen(key), value, value_length, expires, flags); if (rc != MEMCACHED_SUCCESS) { // handle failure } .EE .UNINDENT .UNINDENT .sp It is best practice to always look at the return value of any operation. .SH FETCHING MULTIPLE VALUES .INDENT 0.0 .INDENT 3.5 .sp .EX memcached_return_t rc; char *keys[]= {\(dqfudge\(dq, \(dqson\(dq, \(dqfood\(dq}; size_t key_length[]= {5, 3, 4}; unsigned int x; uint32_t flags; char return_key[MEMCACHED_MAX_KEY]; size_t return_key_length; char *return_value; size_t return_value_length; rc= memcached_mget(memc, keys, key_length, 3); x= 0; while ((return_value= memcached_fetch(memc, return_key, &return_key_length, &return_value_length, &flags, &rc))) { free(return_value); x++; } .EE .UNINDENT .UNINDENT .sp Notice that you freed values returned from memcached_fetch(). The define \fBMEMCACHED_MAX_KEY\fP is provided for usage. .SH SEE ALSO .INDENT 0.0 .INDENT 3.5 \fB\X'tty: link https://linux.die.net/man/1/memcached'\fI\%memcached(1)\fP\X'tty: link'\fP .UNINDENT .UNINDENT .\" Generated by docutils manpage writer. .