Redis 数据结构
字符串(String)
最基础的数据类型:
SET name "BookStack"
GET name
INCR counter # 原子自增
INCRBY counter 50 # +50
MSET k1 v1 k2 v2 # 批量设置
MGET k1 k2 # 批量获取
应用场景
- 缓存数据
- 计数器
- 分布式锁
列表(List)
基于双向链表实现:
LPUSH queue task1 # 左侧插入
RPUSH queue task3 # 右侧插入
RPOP queue # 右侧弹出
LRANGE queue 0 -1 # 查看全部
LLEN queue # 列表长度
应用场景
- 消息队列
- 最新消息列表
- 时间线
集合(Set)
无序、不重复的字符串集合:
SADD users:online "user1"
SMEMBERS users:online
SISMEMBER users:online "user1" # 判断存在
SCARD users:online # 成员数量
# 集合运算
SINTER set1 set2 # 交集
SUNION set1 set2 # 并集
SDIFF set1 set2 # 差集
应用场景
- 标签系统
- 共同好友
- 去重操作
有序集合(Sorted Set)
带分值的集合,自动排序:
ZADD leaderboard 100 "player1"
ZADD leaderboard 200 "player2"
ZREVRANGE leaderboard 0 -1 WITHSCORES # 排行榜
ZRANK leaderboard "player1" # 排名
ZINCRBY leaderboard 50 "player1" # 加分
应用场景
- 排行榜
- 延时队列
- 范围查询
哈希(Hash)
适合存储对象:
HSET user:1001 name "Alice" age 30
HGET user:1001 name
HGETALL user:1001
HINCRBY user:1001 age 1 # 年龄+1
应用场景
- 对象缓存
- 购物车
- 用户信息
高级数据结构
Bitmap
SETBIT login:20260101 1001 1
BITCOUNT login:20260101 # 统计登录人数
HyperLogLog
PFADD unique:visits "ip1"
PFCOUNT unique:visits # 基数估计
GEO
GEOADD locations 116.39 39.91 "天安门"
GEORADIUS locations 116.40 39.90 5 km
