-.. highlight:: perl
-
-
-libmemcached_examples
-*********************
-
+========
+Examples
+========
Examples for libmemcached
-
-***********
+-----------
DESCRIPTION
-***********
+-----------
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.
-Creating and Freeing structure
-==============================
+---------------------
+Connecting to servers
+---------------------
-.. code-block:: perl
+.. code-block:: c
- memcached_st *memc;
- memcached_return_t rc;
-
- memc= memcached_create(NULL);
- ...do stuff...
+ const char *config_string= "--SERVER=host10.example.com --SERVER=host11.example.com --SERVER=host10.example.com"
+ memcached_st *memc= memcached(config_string, strlen(config_string);
+ {
+ ...
+ }
memcached_free(memc);
-The above code would create a connection and then free the connection when
-finished.
+In the above code you create a :c:type:`memcached_st` object with three server
+by making use of :c:func:`memcached_create_with_options()`.
-Connecting to servers
-=====================
+--------------------------
+Creating a pool of servers
+--------------------------
-.. code-block:: perl
+.. code-block:: c
- memcached_server_st *servers;
- memcached_st *memc= memcached_create(NULL);
- char servername[]= "0.example.com";
-
- servers= memcached_server_list_append(NULL, servername, 400, &rc);
-
- for (x= 0; x < 20; x++)
- {
- char buffer[SMALL_STRING_LEN];
-
- snprintf(buffer, SMALL_STRING_LEN, "%u.example.com", 400+x);
- servers= memcached_server_list_append(servers, buffer, 401, &rc);
- }
- rc= memcached_server_push(memc, servers);
- memcached_server_free(servers);
- memcached_free(memc);
+Creating a pool of Servers::
+
+ const char *config_string= "--SERVER=host10.example.com --SERVER=host11.example.com --SERVER=host10.example.com";
+
+ 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);
-In the above code you create a \ ``memcached_st``\ object that you then feed in a
-single host into. In the for loop you build a \ ``memcached_server_st``\
-pointer that you then later feed via memcached_server_push() into the
-\ ``memcached_st``\ structure.
+ /*
+ Destroy the pool.
+ */
+ memcached_pool_destroy(pool);
-You can reuse the \ ``memcached_server_st``\ object with multile \ ``memcached_st``\
-structures.
+In the above code you create a :c:type:`memcached_pool_st` object with three
+server by making use of :c:func:`memcached_pool()`.
+
+When :c:func:`memcached_pool_destroy()` all memory will be released that is associated
+with the pool.
+
+
+----------------------------
Adding a value to the server
-============================
+----------------------------
+
+.. code-block:: c
-.. code-block:: perl
+Adding a value to the Server::
char *key= "foo";
- char *value;
- size_t value_length= 8191;
- unsigned int x;
-
- value = (char*)malloc(value_length);
- assert(value);
-
- for (x= 0; x < value_length; x++)
- value[x] = (char) (x % 127);
-
- for (x= 0; x < 1; x++)
+ char *value= "value";
+
+ memcached_return_t rc= memcached_set(memc, key, strlen(key), value, value_length, (time_t)0, (uint32_t)0);
+
+ if (rc != MEMCACHED_SUCCESS)
{
- rc= memcached_set(memc, key, strlen(key),
- value, value_length,
- (time_t)0, (uint32_t)0);
- assert(rc == MEMCACHED_SUCCESS);
+ ... // handle failure
}
-
- free(value);
It is best practice to always look at the return value of any operation.
+------------------------
Fetching multiple values
-========================
+------------------------
-.. code-block:: perl
+.. code-block:: c
memcached_return_t rc;
char *keys[]= {"fudge", "son", "food"};
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)))
Notice that you freed values returned from memcached_fetch(). The define
-\ ``MEMCACHED_MAX_KEY``\ is provided for usage.
+:c:type:`MEMCACHED_MAX_KEY` is provided for usage.
-****
+----
HOME
-****
+----
To find out more information please check:
-`https://launchpad.net/libmemcached <https://launchpad.net/libmemcached>`_
-
-
-******
-AUTHOR
-******
-
-
-Brian Aker, <brian@tangent.org>
+`http://libmemcached.org/ <http://libmemcached.org/>`_
-********
+--------
SEE ALSO
-********
+--------
-memcached(1)
+:manpage:`memcached(1)`