【Java-Redis】Redis 支持哪些数据类型?
·
Redis 作为高性能键值数据库,支持 9 种核心数据类型,每种类型都有独特的使用场景。以下是详细解析:

一、基础数据类型(5种)
-
String(字符串)
- 特点:最大 512MB,可存储文本/二进制数据
- 场景:缓存、计数器(
INCR)、分布式锁(SETNX) - 示例:
SET user:1000 "Alice"
-
List(列表)
- 特点:双向链表结构,元素可重复
- 场景:消息队列、最新消息排行、操作记录
- 示例:
LPUSH news:latest "Breaking: AI breakthrough"
-
Hash(哈希表)
- 特点:键值对集合,适合存储对象
- 场景:用户信息、商品属性、配置参数
- 示例:
HSET user:1000 name "Bob" age 28 HGET user:1000 age
-
Set(集合)
- 特点:无序唯一元素集合,支持交并差运算
- 场景:共同好友、抽奖白名单、标签系统
- 示例:
SADD lottery:2023 user1000 user1001
-
Sorted Set(有序集合)
- 特点:元素带分数(score)实现自动排序
- 场景:排行榜、延时队列、范围查询
- 示例:
ZADD leaderboard 95 "PlayerA" 87 "PlayerB"
二、高级数据类型(4种)
-
Bitmaps(位图)
- 本质:String 的位操作扩展
- 场景:用户签到、实时活跃统计
- 示例:
SETBIT sign:202307 28 1(记录7月28日签到)
-
HyperLogLog
- 特点:基数统计(误差率 0.81%)
- 场景:UV 统计、大规模去重
- 示例:
PFADD visitors:20230729 user123
-
GEO(地理位置)
- 底层:基于 Sorted Set 实现
- 场景:附近的人、位置搜索
- 示例:
GEOADD cities 116.397128 39.916527 "Beijing" GEORADIUS cities 116.40 39.90 100 km
-
Stream
- 特点:支持消息持久化与消费组
- 场景:消息队列、事件溯源
- 示例:
XADD orders * product "iPad" price 599 XREAD COUNT 2 STREAMS orders 0-0
三、选择指南(何时用什么?)
| 数据类型 | 典型场景 | 关键优势 |
|---|---|---|
| String | 缓存、计数器 | 简单高效 |
| Hash | 对象存储 | 字段级操作 |
| Sorted Set | 排行榜 | 自动排序+范围查询 |
| Bitmaps | 实时统计 | 超高存储效率 |
| Stream | 消息队列 | 持久化+消费组管理 |
四、思维导图

更多推荐
所有评论(0)