Redis HMSET in PHP (Detailed Guide w/ Code Examples)

Use Case(s)

The HMSET command in Redis is used to set multiple field-value pairs for a hash in a single atomic operation. In PHP, this operation can be used to store complex data structures such as user profiles, app settings, or any other type of structured information that needs associative array-like functionality.

Code Examples

Here is an example of how to use HMSET with the Redis class in PHP:

$redis = new Redis(); $redis->connect('', 6379); $userData = array( 'name' => 'John Doe', 'email' => '', 'age' => 36, ); $redis->hMSet('user:1', $userData);

In this example, we create a new connection to our Redis server. Then, we prepare an associative array $userData containing the name, email, and age of a user. We call hMSet on our Redis instance to store the entire array under the key 'user:1'. This way, you can store and retrieve the whole object at once rather than interacting with each field individually.

Best Practices

  1. Naming Convention: Consider using a naming convention for hash keys that includes the type of data being stored. For example, consider using 'user:userID' when storing user objects. This makes it easier to identify what type of data is stored in a given key.
  2. Avoid Large Hashes: Though Redis can handle large hashes, it's best to avoid overly large ones because they can consume a significant amount of memory and negatively impact performance.

Common Mistakes

One common mistake is not checking for the existence of a hash before trying to set new fields with HMSET. Even though Redis will automatically create a new hash if one does not exist, this could lead to unexpected results if there was a typo in your key name or if the hash was accidentally deleted.


  1. Is HMSET atomic? Yes, HMSET is an atomic operation in Redis. This means that all the field-value pairs are set at once, and no other operation can intervene.

  2. What happens if I use HMSET on an existing key that's not a hash? If the key exists but does not contain a hash, Redis returns an error.

Was this content helpful?

Start building today

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