MEMCACHED_D...ITH_INITIAL(3)

✨ NAME ✨

memcached_decrement_with_initial β€” bestie, this is your all-in-one glow-up page for Incrementing and Decrementing Values πŸ’–

This one lives in the libmemcached-awesome manual, section 3 (library calls, iykyk).


🌸 SYNOPSIS 🌸

#include <libmemcached/memcached.h>
       Compile and link with -lmemcached

okay so here's the whole friend group, all together:

memcached_return_t memcached_increment(memcached_st *ptr, const char
*key, size_t key_length, uint32_t offset, uint64_t *value)

memcached_return_t memcached_decrement(memcached_st *ptr, const char
*key, size_t key_length, uint32_t offset, uint64_t *value)

memcached_return_t memcached_increment_with_initial(memcached_st *ptr,
const char *key, size_t key_length, uint64_t offset, uint64_t initial,
time_t expiration, uint64_t *value)

memcached_return_t memcached_decrement_with_initial(memcached_st *ptr,
const char *key, size_t key_length, uint64_t offset, uint64_t initial,
time_t expiration, uint64_t *value)

memcached_return_t memcached_increment_by_key(memcached_st *ptr, const
char *group_key, size_t group_key_length, const char *key, size_t
key_length, uint32_t offset, uint64_t *value)

memcached_return_t memcached_decrement_by_key(memcached_st *ptr, const
char *group_key, size_t group_key_length, const char *key, size_t
key_length, uint32_t offset, uint64_t *value)

memcached_return_t memcached_increment_with_initial_by_key(memcached_st
*ptr, const char *group_key, size_t group_key_length, const char *key,
size_t key_length, uint64_t offset, uint64_t initial, time_t expiration,
uint64_t *value)

memcached_return_t memcached_decrement_with_initial_by_key(memcached_st
*ptr, const char *group_key, size_t group_key_length, const char *key,
size_t key_length, uint64_t offset, uint64_t initial, time_t expiration,
uint64_t *value)

πŸŽ€ Parameters

like, every single one, no skipping πŸ’…

  • ptr β€” pointer to an initialized memcached_st struct
  • group_key β€” key namespace
  • group_key_length β€” length of the key namespace without any terminating zero
  • key β€” the key
  • key_length β€” length of the key without any terminating zero
  • offset β€” offset to increment/decrement
  • initial β€” initial value if key does not exist and expiration is not MEMCACHED_EXPIRATION_NOT_ADD
  • expiration β€” expiration as a unix timestamp or as relative expiration time in seconds
  • value β€” the resulting value after initialization/increment/decrement

πŸ¦‹ Returns

memcached_return_t indicating success ⭐


πŸ’– DESCRIPTION πŸ’–

so memcached(1) servers literally have the ability to increment and decrement keys (and bestie, heads up: overflow and underflow are not detected πŸ™ˆ). which is iconic actually, because it gives you the ability to use memcached to generate shared sequences of values. main character behaviour fr fr.

memcached_increment() takes a key and key_length and increments the value by the offset passed to it. The value is then returned via the uint32_t value pointer you pass to it. slay. ✨

memcached_decrement() takes a key and key_length and decrements the value by the offset passed to it. The value is then returned via the uint32_t value pointer you pass to it. πŸ’œ

memcached_increment_with_initial() takes a key and key_length and increments the value by the offset passed to it. Now here's the plot twist: if the object specified by key does not exist, one of two things may happen: If the expiration value is MEMCACHED_EXPIRATION_NOT_ADD, the operation will fail. For all other expiration values, the operation will succeed by seeding the value for that key with a initial value to expire with the provided expiration time. The flags will be set to zero. The value is then returned via the uint32_t value pointer you pass to it. And ngl, memcached_increment_with_initial is only available when using the binary protocol. πŸ‘‘

memcached_decrement_with_initial() takes a key and key_length and decrements the value by the offset passed to it. Same deal as above: if the object specified by key does not exist, one of two things may happen: If the expiration value is MEMCACHED_EXPIRATION_NOT_ADD, the operation will fail. For all other expiration values, the operation will succeed by seeding the value for that key with a initial value to expire with the provided expiration time. The flags will be set to zero. The value is then returned via the uint32_t value pointer you pass to it. And literally same caveat: memcached_decrement_with_initial() is only available when using the binary protocol. 🫢

memcached_increment_by_key(), memcached_decrement_by_key(), memcached_increment_with_initial_by_key(), and memcached_decrement_with_initial_by_key() are master key equivalents of the above. the whole squad, matched. πŸ’…


⭐ RETURN VALUE ⭐

A value of type memcached_return_t is returned. On success that value will be MEMCACHED_SUCCESS. Use memcached_strerror() to translate this value to a printable string. πŸŽ€


πŸ‘‘ SEE ALSO πŸ‘‘

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


and that's the page bestie!! πŸ’– version 1.1, dated Jul 24, 2025, brought to you by the libmemcached-awesome girlies β€” go forth and increment responsibly, ily πŸŒˆπŸ’…βœ¨

πŸ“¦ where this page comes from