Databases 19 min read

Redis Data Structures: Strings, Lists, Hashes, Sets, and Sorted Sets with Commands and Use Cases

An in‑depth guide to Redis’s core data structures—String, List, Hash, Set, and Sorted Set—detailing their characteristics, common commands, practical examples, and typical application scenarios such as caching, counting, messaging, and ranking, with code snippets and reference links.

IT Services Circle
IT Services Circle
IT Services Circle
Redis Data Structures: Strings, Lists, Hashes, Sets, and Sorted Sets with Commands and Use Cases

String (字符串)

String is the simplest and most frequently used Redis data structure. It stores binary‑safe data such as plain strings, integers, floating‑point numbers, base64‑encoded images, or serialized objects. Redis implements its own Simple Dynamic String (SDS) which provides O(1) length retrieval and safety against buffer overflows.

Common Commands

Command

Description

SET key value

Set the value of a key

SETNX key value

Set the value only if the key does not exist

GET key

Get the value of a key

MSET key1 value1 key2 value2 …

Set multiple keys at once

MGET key1 key2 …

Get values of multiple keys

STRLEN key

Return the length of the string stored at key

INCR key

Increment the numeric value stored at key

DECR key

Decrement the numeric value stored at key

EXISTS key

Check if a key exists

DEL key

Delete a key

EXPIRE key seconds

Set a timeout on a key

Basic usage example:

> SET key value
OK
> GET key
"value"
> EXISTS key
(integer) 1
> STRLEN key
(integer) 5
> DEL key
(integer) 1
> GET key
(nil)

Typical scenarios include caching sessions, tokens, image URLs, or serialized objects, and using strings as counters with INCR/DECR.

List (列表)

Redis List implements a doubly linked list, allowing fast insertion/removal at both ends and reverse traversal. It can be used as a queue or a stack.

Common Commands

Command

Description

RPUSH key value1 value2 …

Append one or multiple elements to the tail

LPUSH key value1 value2 …

Prepend one or multiple elements to the head

LPOP key

Remove and return the first element (left)

RPOP key

Remove and return the last element (right)

LLEN key

Get the length of the list

LRANGE key start end

Get elements between start and end indexes

Queue example:

> RPUSH myList value1
(integer) 1
> RPUSH myList value2 value3
(integer) 3
> LPOP myList
"value1"
> LRANGE myList 0 -1
1) "value2"
2) "value3"

Stack example:

> RPUSH myStack value1 value2 value3
(integer) 3
> RPOP myStack
"value3"

Lists are also useful for pagination (LRANGE) and simple message queues.

Hash (哈希)

A Hash maps fields to values, ideal for representing objects. It offers O(1) access to individual fields.

Common Commands

Command

Description

HSET key field value

Set the value of a field

HSETNX key field value

Set only if the field does not exist

HMSET key field1 value1 field2 value2 …

Set multiple field‑value pairs

HGET key field

Get the value of a field

HMGET key field1 field2 …

Get values of multiple fields

HGETALL key

Get all fields and values

HEXISTS key field

Check if a field exists

HDEL key field1 field2 …

Delete one or more fields

HLEN key

Get the number of fields

Object‑like usage example:

> HMSET userInfoKey name "guide" description "dev" age "24"
OK
> HGET userInfoKey name
"guide"
> HGETALL userInfoKey
1) "name"
2) "guide"
3) "description"
4) "dev"
5) "age"
6) "24"
> HSET userInfoKey name "GuideGeGe"
OK
> HGET userInfoKey name
"GuideGeGe"

Typical scenarios include storing user profiles, product information, or shopping‑cart data.

Set (集合)

Set stores unique, unordered elements. It supports membership tests and set operations such as union, intersection, and difference.

Common Commands

Command

Description

SADD key member1 member2 …

Add one or more members

SMEMBERS key

Return all members

SCARD key

Return the number of members

SISMEMBER key member

Check membership

SINTER key1 key2 …

Intersection of sets

SUNION key1 key2 …

Union of sets

SDIFF key1 key2 …

Difference of sets

SPOP key count

Remove and return random members

SRANDMEMBER key count

Return random members without removal

Basic usage:

> SADD mySet value1 value2
(integer) 2
> SADD mySet value1
(integer) 0
> SMEMBERS mySet
1) "value1"
2) "value2"
> SISMEMBER mySet value1
(integer) 1

Intersection example:

> SINTERSTORE mySet3 mySet mySet2
(integer) 1
> SMEMBERS mySet3
1) "value2"

Union example:

> SUNION mySet mySet2
1) "value3"
2) "value2"
3) "value1"

Difference example:

> SDIFF mySet mySet2
1) "value1"

Typical use cases: de‑duplicated collections (e.g., likes), computing common friends/followers, and random selection for lotteries.

Sorted Set (有序集合)

Sorted Set adds a floating‑point score to each member, enabling ordered retrieval and range queries. It is useful for leaderboards, priority queues, and any scenario where ranking matters.

Common Commands

Command

Description

ZADD key score1 member1 score2 member2 …

Add members with scores

ZCARD key

Number of members

ZSCORE key member

Get the score of a member

ZINTERSTORE dest numkeys key1 key2 …

Intersection with score aggregation

ZUNIONSTORE dest numkeys key1 key2 …

Union with score aggregation

ZDIFF dest numkeys key1 key2 …

Difference with score aggregation

ZRANGE key start end [WITHSCORES]

Range by score ascending

ZREVRANGE key start end [WITHSCORES]

Range by score descending

ZREVRANK key member

Rank of member (high to low)

Basic usage:

> ZADD myZset 2.0 value1 1.0 value2
(integer) 2
> ZCARD myZset
2
> ZSCORE myZset value1
2.0
> ZRANGE myZset 0 1
1) "value2"
2) "value1"
> ZREVRANGE myZset 0 1
1) "value1"
2) "value2"

Intersection example:

> ZINTERSTORE myZset3 2 myZset myZset2
1
> ZRANGE myZset3 0 -1 WITHSCORES
value2
5

Union example:

> ZUNIONSTORE myZset4 2 myZset myZset2
3
> ZRANGE myZset4 0 -1 WITHSCORES
value1
2
value3
3
value2
5

Difference example:

> ZDIFF 2 myZset myZset2 WITHSCORES
value1
2

Common scenarios: leaderboards (e.g., live‑stream gifts, game rankings), priority task queues, and any feature that requires ordered retrieval by a numeric weight.

Reference Materials

[1] Redis Data Structures: https://redis.com/redis-enterprise/data-structures/

[2] Redis Data Types Tutorial: https://redis.io/docs/manual/data-types/data-types-tutorial/

[3] Linear Data Structures (arrays, linked lists, stacks, queues): https://javaguide.cn/cs-basics/data-structure/linear-data-structure.html

RedisstringData Structureshashlistcommandssorted setset
IT Services Circle
Written by

IT Services Circle

Delivering cutting-edge internet insights and practical learning resources. We're a passionate and principled IT media platform.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.