Introduction to Redis hashes
Redis hashes are record types structured as collections of field-value pairs. You can use hashes to represent basic objects and to store groupings of counters, among other things.
- Represent a basic user profile as a hash:
> HSET user:123 username martina firstName Martina lastName Elisa country GB (integer) 4 > HGET user:123 username "martina" > HGETALL user:123 1) "username" 2) "martina" 3) "firstName" 4) "Martina" 5) "lastName" 6) "Elisa" 7) "country" 8) "GB"
- Store counters for the number of times device 777 had pinged the server, issued a request, or sent an error:
> HINCRBY device:777:stats pings 1 (integer) 1 > HINCRBY device:777:stats pings 1 (integer) 2 > HINCRBY device:777:stats pings 1 (integer) 3 > HINCRBY device:777:stats errors 1 (integer) 1 > HINCRBY device:777:stats requests 1 (integer) 1 > HGET device:777:stats pings "3" > HMGET device:777:stats requests errors 1) "1" 2) "1"
HSETsets the value of one or more fields on a hash.
HGETreturns the value at a given field.
HMGETreturns the values at one or more given fields.
HINCRBYincrements the value at a given field by the integer provided.
See the complete list of hash commands.
Most Redis hash commands are O(1).
A few commands - such as
HGETALL - are O(n), where n is the number of field-value pairs.
Every hash can store up to 4,294,967,295 (2^32 - 1) field-value pairs. In practice, your hashes are limited only by the overall memory on the VMs hosting your Redis deployment.
- Redis Hashes Explained is a short, comprehensive video explainer covering Redis hashes.
- Redis University's RU101 covers Redis hashes in detail.