Dragonfly

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:

  1. We connect to our local Redis instance.
  2. We create a dictionary that represents a user, with fields for id, name, and email.
  3. We use hmset to store the entire dictionary in the hash identified by "user:123".
  4. 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

Common Mistakes

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?

Similar Code Examples

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book

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