Redis HMSET in Python (Detailed Guide w/ Code Examples)
Use Case(s)
HMSET is a command in Redis used to set multiple field-value pairs in a hash. In Python, when using the redis-py library, this function is commonly used for storing complex objects (like user data), where each property of the object can be stored as a field-value pair in a hash.
Code Examples
Here's an example of how you might use HMSET to store and retrieve user information:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
# Using HMSET
user = {
"id": "123",
"name": "Alice",
"email": "alice@example.com"
}
r.hmset("user:123", user)
# Retrieve the user data with HGETALL
returned_user = r.hgetall("user:123")
print(returned_user) # Prints: {b'id': b'123', b'name': b'Alice', b'email': b'alice@example.com'}In this code:
- We connect to our local Redis instance.
- We create a dictionary that represents a user, with fields for id, name, and email.
- We use
hmsetto store the entire dictionary in the hash identified by"user:123". - Finally, we retrieve the hash with
hgetall.
Note that as of redis-py version 4.0.0, HMSET will be removed and you should now use HSET. Here's how you can achieve the same result using HSET:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
# Using HSET
user = {
"id": "123",
"name": "Alice",
"email": "alice@example.com"
}
r.hset("user:123", mapping=user)
# Retrieve the user data with HGETALL
returned_user = r.hgetall("user:123")
print(returned_user) # Prints: {b'id': b'123', b'name': b'Alice', b'email': b'alice@example.com'}Best Practices
- If you only need to set a single field in a hash, consider using the
HSETcommand instead ofHMSET. - Remember that Redis is single-threaded, so writing large amounts of data at once can block other commands. Break up big HMSET commands into smaller chunks if necessary.
Common Mistakes
- Not updating the codebase with new versions of Redis and redis-py. After Redis 4.0.0,
HMSETis deprecated andHSETshould be used to perform the same tasks. - Forgetting that Redis keys and field names are case sensitive. 'User:123' and 'user:123' would refer to different hashes.
FAQs
Q: What's the difference between HSET and HMSET?
A: HMSET sets multiple fields in a hash at once, while HSET can set a single field or multiple fields. As of Redis 4.0.0, HMSET is deprecated and its functionality has been integrated into HSET.
Q: Is there a limit to the number of fields I can store in a hash with HMSET?
A: There's no practical limit to the number of fields you can store in a hash. However, remember that storing a large amount of data at once can block other operations because Redis is single-threaded.
Was this content helpful?
Help us improve by giving us your feedback.
Similar Code Examples
Free System Design on AWS E-Book
Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Switch & save up to 80%
Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement. Instantly experience up to a 25X boost in performance and 80% reduction in cost