Hash
HGETDEL
Get and delete hash fields atomically.
The HGETDEL command returns the values of the specified fields and then atomically deletes them from the hash. This is useful when you need to retrieve and remove data in a single atomic operation.
Arguments
keybodystrrequired
The key of the hash.
fieldsbody*List[str]required
One or more field names to get and delete.
Response
Optional[List[str | None]]
A list of values corresponding to the requested fields, in the same order as the field arguments. For fields that do not exist, None is returned in that position. If the hash doesn't exist, None is returned.
Basic Example
# Set some hash fieldsredis.hset("user:123", values={ "name": "John", "age": "30", "email": "john@example.com"})# Get and delete specific fieldsresult = redis.hgetdel("user:123", "name", "email")assert result == ["John", "john@example.com"]# Verify fields were deletedassert redis.hget("user:123", "name") is NoneMultiple Fields
redis.hset("session:abc", values={ "token": "xyz123", "user": "john", "expires": "2024-12-31"})# Get and delete all fieldssession = redis.hgetdel("session:abc", "token", "user", "expires")assert session == ["xyz123", "john", "2024-12-31"]Non-existent Fields
redis.hset("user:456", "name", "Jane")# Get and delete with non-existent fieldresult = redis.hgetdel("user:456", "name", "email")assert result == ["Jane", None]Non-existent Hash
# Returns None if hash doesn't existresult = redis.hgetdel("nonexistent", "field1")assert result is NoneUse Cases
- Session Management: Retrieve and invalidate session data atomically
- Cache Cleanup: Get cached data while removing it from storage
- Queue Processing: Fetch and remove job data in a single operation
- Temporary Data: Retrieve one-time use tokens or codes while deleting them