Add Operation in Memcached Using Ruby (Detailed Guide w/ Code Examples)

Use Case(s)

The add operation in Memcached using Ruby is commonly used when you want to store a value only if the server doesn't already hold data for this key. This can be particularly useful when initializing some critical values or when working with distributed systems where multiple processes might attempt to set a value concurrently.

Code Examples

Here is how to use the add function in Ruby with the 'dalli' gem, a popular choice for interfacing with Memcached.

Make sure you have installed the 'dalli' gem:

gem install dalli

Here's a simple example of using add:

require 'dalli' dc ='localhost:11211') dc.set('foo', 'bar') # Initialize the key-value pair dc.add('foo', 'baz') # Attempt to add a different value to the existing key puts dc.get('foo') # Outputs: 'bar'

In this example, the initial value 'bar' for key 'foo' remains intact because the add operation will not overwrite an existing key.

Best Practices

  • Use add when you're unsure whether a key exists and do not want to overwrite it.
  • Keep keys reasonably short and avoid special characters.
  • Monitor your Memcached servers regularly to ensure they are functioning correctly.

Common Mistakes

  • Not checking the return value of add. It returns true if it successfully added the item, false otherwise. Ignoring this can lead to incorrect assumptions about the state of your cache.
  • Treating Memcached as a persistent storage solution. Remember, it's a temporary cache and data can be evicted when memory is full.


Q: What happens if I use add with a key that already exists in Memcached? A: If the key already exists, add will not update the value and will return false. The existing key-value pair will remain as it is.

Q: Is Memcached data persistent? A: No, Memcached is not a persistent data store. It's a caching system, which means data stored in it could disappear at any time (e.g., eviction due to low memory or server restart).

Was this content helpful?

Start building today

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.