Skip to content

Redis 五种数据类型

TIP

Redis 提供了丰富的数据结构,每种类型都有对应的应用场景。掌握它们可以事半功倍。

String(字符串)

适合存储简单值:缓存对象、计数器、分布式锁。

bash
SET key "value"          # 设置值
SETNX key "value"        # 不存在才设置
GET key                  # 获取值
MSET k1 v1 k2 v2         # 批量设置
MGET k1 k2               # 批量获取
INCR counter             # 原子递增(适合点赞计数)
DECR counter             # 原子递减
INCRBY counter 10        # 增加指定值
SETEX key 60 "value"     # 设置值并指定过期时间

Hash(哈希)

适合存储对象(类似 Java 的 Map)。

bash
HSET user:1001 name "张三" age 25
HGET user:1001 name
HGETALL user:1001
HMSET user:1002 name "李四" age 30 city "北京"
HINCRBY user:1001 age 1    # 年龄加1
HDEL user:1001 age

List(列表)

适合消息队列、时间线、最新消息等场景。

bash
LPUSH news "消息1"       # 从左边插入
RPUSH news "消息2"       # 从右边插入
LPOP news                # 从左边弹出
RPOP news                # 从右边弹出
LRANGE news 0 -1         # 查看所有元素
LLEN news                # 获取长度
BRPOP news 5             # 阻塞式弹出(支持超时)

Set(集合)

适合标签、去重、共同好友等场景。

bash
SADD tags "java" "python" "go"  # 添加
SMEMBERS tags                    # 查看所有
SISMEMBER tags "java"             # 判断是否存在
SINTER set1 set2                  # 交集
SUNION set1 set2                  # 并集
SDIFF set1 set2                   # 差集
SCARD tags                        # 元素个数

Sorted Set(有序集合)

适合排行榜、延时队列、范围查找。

bash
ZADD leaderboard 100 "玩家A" 200 "玩家B" 150 "玩家C"
ZRANGE leaderboard 0 -1          # 升序查看
ZREVRANGE leaderboard 0 -1       # 降序查看(排行榜)
ZRANK leaderboard "玩家A"         # 查看排名
ZSCORE leaderboard "玩家A"        # 查看分数
ZINCRBY leaderboard 50 "玩家A"    # 加分
ZREVRANGE leaderboard 0 2 WITHSCORES  # 前三名