Redis Data Types: The Ultimate Guide for Beginners

Redis is not just a simple key-value store; it's a data structure server. Unlike simpler key-value stores where values are just binary blobs, Redis supports multiple complex data types. Understanding these types is crucial for leveraging Redis's full power.

In this guide, we will explore the five core data types: Strings, Lists, Sets, Hashes, and Sorted Sets.

1. Strings

Strings are the most basic Redis data type. A key corresponds to a single string value. It is binary safe, meaning it can contain any kind of data, like a JPEG image or a serialized Ruby object.

Common Commands

  • SET key value: Set a key to a string value.
  • GET key: Retrieve the value of a key.
  • INCR key: Increment the integer value of a key.

Example in Editor

SET user:name "Alice"
GET user:name
INCR page:views

Use Case: Caching HTML fragments, storing session data, or simple counters.

2. Lists

Redis Lists are simply lists of strings, sorted by insertion order. You can add elements to the head (left) or tail (right) of the list.

Common Commands

  • LPUSH key value: Insert a value at the head.
  • RPUSH key value: Insert a value at the tail.
  • LPOP key: Remove and return the first element.
  • LRANGE key start stop: Get a range of elements.

Example in Editor

RPUSH tasks "Deploy code" "Run tests"
LPUSH tasks "Write documentation"
LRANGE tasks 0 -1

Use Case: Implementing queues (Job Queue), storing latest timeline updates (e.g., recent 10 posts).

3. Sets

Redis Sets are an unordered collection of unique strings. You can add, remove, and test for existence of members in O(1) time.

Common Commands

  • SADD key member: Add a member to the set.
  • SMEMBERS key: Get all members of the set.
  • SISMEMBER key member: Check if a member exists.

Example in Editor

SADD skills "Redis" "JavaScript" "Python"
SADD skills "Redis"  # Will be ignored as it's a duplicate
SMEMBERS skills

Use Case: Tagging systems (e.g., tags on a blog post), unique IP visitors, social graph (followers).

4. Hashes

Redis Hashes are maps between string fields and string values, so they are the perfect data type to represent objects (e.g., a User with a number of fields like name, surname, age).

Common Commands

  • HSET key field value: Set the string value of a hash field.
  • HGET key field: Get the value of a hash field.
  • HGETALL key: Get all fields and values in the hash.

Example in Editor

HSET user:1001 name "Bob" age "30" email "bob@example.com"
HGETALL user:1001

Use Case: Storing object-like data. It is memory efficient to store many small objects as Hashes.

5. Sorted Sets (ZSets)

Sorted Sets are similar to Sets but every member is associated with a score. Members are unique, but scores can be repeated. Elements are sorted by their score.

Common Commands

  • ZADD key score member: Add a member with a score.
  • ZRANGE key start stop: Get a range of members (sorted by score).
  • ZREVRANGE key start stop: Get members in reverse order.

Example in Editor

ZADD leaderboard 100 "PlayerA"
ZADD leaderboard 200 "PlayerB"
ZADD leaderboard 150 "PlayerC"
ZREVRANGE leaderboard 0 -1 WITHSCORES

Use Case: Leaderboards, Priority Queues, Rate Limiting (sliding window).

Conclusion

Mastering these data structures allows you to solve complex architectural problems efficiently. Redis is versatile and fast.

Ready to practice? Go back to the Redis Online Editor and try typing these commands yourself to see the results instantly!