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.
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) 1Intersection 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
5Union example:
> ZUNIONSTORE myZset4 2 myZset myZset2
3
> ZRANGE myZset4 0 -1 WITHSCORES
value1
2
value3
3
value2
5Difference example:
> ZDIFF 2 myZset myZset2 WITHSCORES
value1
2Common 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
IT Services Circle
Delivering cutting-edge internet insights and practical learning resources. We're a passionate and principled IT media platform.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.