MEMCACHED_STATS(3)

πŸ’… MEMCACHED_STATS β€” the libmemcached-awesome era

okay bestie, so this is memcached_stats(3), a page straight out of libmemcached-awesome, and it's literally all about getting memcached statistics. like, peeking into your memcached's soul and asking "how you doin' babe?" πŸ¦‹ no cap.


✨ SYNOPSIS ✨

#include <libmemcached/memcached.h>

and like, you gotta compile and link with -lmemcached obviously πŸ’…

typedef struct memcached_stat_st memcached_stat_st

typedef memcached_return_t (*memcached_stat_fn)(const
memcached_instance_st *server, const char *key, size_t key_length, const
char *value, size_t value_length, void *context)

okay so that callback signature is giving main character energy, let's break down every single param:

  • server β€” pointer to the memcached_instance_st being stat'ed πŸŽ€
  • key β€” the current key
  • key_length β€” the length of the key, and note there's no terminating zero in there, so like don't go looking for one πŸ™ˆ
  • value β€” the value read
  • value_length β€” the length of the value, also with no terminating zero included
  • context β€” pointer to the user supplied context
  • Returns β€” memcached_return_t indicating success ✨

memcached_stat_st *memcached_stat(memcached_st *ptr, char *args,
memcached_return_t *error)

Parameters

  • ptr -- pointer to an initialized memcached_st struct
  • args -- particular state object to query
  • error -- pointer to memcached_return_t indicating success
  • Returns β€” array of memcached_stat_st objects for all available servers πŸ‘‘

memcached_return_t memcached_stat_servername(memcached_stat_st *stat,
char *args, const char *hostname, in_port_t port)

Parameters

  • stat -- pointer to a memcached_stat_st struct to fill
  • args -- particular state object to query
  • hostname -- the hostname or IP address of the server to stat
  • port -- the port of the server to stat
  • Returns β€” memcached_return_t indicating success πŸ’–

char *memcached_stat_get_value(memcached_st *ptr, memcached_stat_st
*stat, const char *key, memcached_return_t *error)

Parameters

  • ptr -- pointer to initialized memcached_st struct
  • stat -- pointer to initialized memcached_stat_st struct
  • key -- the statistic to query
  • error -- pointer to memcached_return_t indicating success
  • Returns β€” string value of the statistic ⭐

char **memcached_stat_get_keys(memcached_st *ptr, memcached_stat_st
*stat, memcached_return_t *error)

Parameters

  • ptr -- pointer to initialized memcached_st struct
  • stat -- pointer to initialized memcached_stat_st struct
  • error -- pointer to memcached_return_t indicating success
  • Returns β€” array of default keys probably available in the statistics 🌸

memcached_return_t memcached_stat_execute(memcached_st *ptr, const char
*args, memcached_stat_fn func, void *context)

Parameters

  • ptr -- pointer to initialized memcached_st struct
  • args -- particular state object to query
  • func -- memcached_stat_fn callback
  • context -- pointer to user supplied context
  • Returns β€” memcached_return_t indication success 🫢

🌈 DESCRIPTION 🌈

so, libmemcached has the ability to query a memcached(1) server (or like, a whole collection of servers, the more the merrier) for their current state. queries to find state return a memcached_stat_st structure. and bestie, you are responsible for freeing this structure. it's yours now, you adopted it πŸ’€

and yes technically it is possible to access the structure directly, but it is not advisable β€” like, don't do it, it's giving chaos. memcached_stat_get_value() has been provided to query the structure instead, use that one okay? πŸ™

memcached_stat_execute() uses the servers found in memcached_stat_st and executes a "stat" command on each server. args is an optional argument that can be passed in to modify the behavior of "stats". you will need to supply a callback function that will be supplied each pair of values returned by the memcached server. yes, every pair. no skips πŸ’…

memcached_stat() fetches an array of memcached_stat_st structures containing the state of all available memcached servers. the return value must be freed by the calling application (that's you, boo). and here's the tea: if called with the MEMCACHED_BEHAVIOR_USE_UDP behavior set, a NULL value is returned and the error parameter is set to MEMCACHED_NOT_SUPPORTED. rude but iconic 😭

memcached_stat_servername() can be used standalone without a memcached_st to obtain the state of a particular server. "args" is used to define a particular state object (a list of these are not provided for by either the memcached_stat_get_keys() call nor are they defined in the memcached protocol β€” so like, you're on your own for that one bestie πŸŽ€). you must specify the hostname and port of the server you want to obtain information on.

memcached_stat_get_value() returns the value of a particular state key. you specify the key you wish to obtain. the key must be null terminated. periodt.

memcached_stat_get_keys() returns a list of keys that the server has state objects on. you are responsible for freeing this list. again. yours. πŸ’–

oh and there's a command line tool, memstat, provided so that you do not have to write an application to do this. slay, no code required ✨


πŸ’€ RETURN VALUE πŸ’€

varies, see particular functions. like, go look at the one you're calling, i can't do everything for you πŸ™ˆ

any method returning a memcached_stat_st expects you to free the memory allocated for it. (sensing a theme here? yeah. free your stuff 🫢)


πŸ‘‘ SEE ALSO πŸ‘‘

memcached(1) libmemcached(3) memcached_strerror(3)


and that's the whole vibe, bestie πŸ’œ this was libmemcached-awesome, version 1.1, dated Jul 24, 2025 β€” go forth and stat responsibly, mwah πŸŽ€βœ¨

πŸ“¦ where this page comes from