概率
核心数据结构
-
String 字符串
-
Hash 哈希
-
List 链表
-
Set 集合
-
Sorted Set / ZSet 有序集合
-
Bitmap 位图
-
GEO 地理位置
Redis帮助命令
help @<group> # 查看某类命令 help <command> # 查看单个命令用法 help <tab> # 查看可帮助主题 quit # 退出

String 字符串结构
String是Redis最基础,最常用的数据结构,可存储字符串,数字,Json串,二进制等
常用命令
SET key value # 设值 GET key # 取值 MSET k1 v1 k2 v2 # 批量设值 MGET k1 k2 # 批量取值 SETNX key value # 不存在则设置(分布式锁基础) DEL key # 删除 EXPIRE key seconds # 设置过期时间 # 原子加减(高并发计数必备) INCR key # +1 DECR key # -1 INCRBY key 10 # +10 DECRBY key 5 # -5
应用场景
普通缓存:用户信息、商品信息、配置
对象缓存:存储 JSON 字符串
分布式锁 :SET lock:order true EX 10 NX
计数器:点赞数、阅读数、库存
分布式 ID:全局唯一 ID 生成
Hash 哈希结构
Hash适合存储对象/结构化数据,如用户信息,商品信息,购物车
常见命令
HSET key field value # 设置单个字段 HGET key field # 获取单个字段 HMSET key f1 v1 f2 v2 # 批量设置 HMGET key f1 f2 # 批量获取 HDEL key field # 删除字段 HLEN key # 字段数量 HGETALL key # 获取所有键值 HINCRBY key field num # 字段原子自增
应用场景:电商购物车
用户id为key,商品id为filed,视频数量为value
1) 添加商品hset cart:1001 10088 1 2) 增加数量hincrby cart:1001 10088 1 3) 商品总数hlen cart:1001 4) 删除商品hdel cart:1001 10088 5) 获取购物车所有商品hgetall cart:1001
优点
-
结构清晰,适合存储对象
-
相比 String 更省内存
-
支持字段级操作
缺点
-
无法对 field 设置过期
-
集群模式下不适合超大 hash
List列表结构
List是有序可重复的双向列表结构,支持双端操作
常见命令
LPUSH key val1 val2 # 左进(队头) RPUSH key val1 val2 # 右进(队尾) LPOP key # 左出 RPOP key # 右出 LRANGE key 0 -1 # 查看全部 BLPOP key timeout # 阻塞左弹出 BRPOP key timeout # 阻塞右弹出
天然实现的数据结构
-
栈(Stack):LPUSH + LPOP
-
队列(Queue):LPUSH + RPOP
-
阻塞 MQ:LPUSH + BRPOP
应用场景
-
消息队列、任务队列
-
时间线、动态列表
-
评论列表、播放列表
Set集合结构
Set是无序,不可重复的集合,支持并集,交集,差集
常见命令
SADD key mem1 mem2 # 添加 SREM key mem # 删除 SMEMBERS key # 查看所有 SCARD key # 元素个数 SISMEMBER key mem # 是否存在 SRANDMEMBER key count # 随机取(不删) SPOP key count # 随机取(删除) # 集合运算 SINTER k1 k2 k3 # 交集 SUNION k1 k2 k3 # 并集 SDIFF k1 k2 k3 # 差集
应用场景
-
抽奖:参与用户 → 随机抽取中奖者
-
点赞 / 收藏 / 标签:去重、统计数量
-
共同关注、好友推荐(交集、差集)
-
去重统计:UV、独立设备
Sorted Set / ZSet 有序集合
在 Set 基础上增加 score(分数),实现自动排序。
常见命令
ZADD key score mem # 添加 ZREM key mem # 删除 ZSCORE key mem # 查分数 ZINCRBY key num mem # 分数自增 ZCARD key # 元素个数 ZRANGE key 0 -1 # 正序 ZREVRANGE key 0 -1 # 倒序(常用)
应用常见:
-
排行榜
-
成绩排名、粉丝排序
-
延时任务(score = 时间戳)
BitMap位图
Bitmap 以bit 位存储数据,极省空间。
常用命令
SETBIT key offset val # 设置某一位 GETBIT key offset # 获取某一位 BITCOUNT key # 统计1的个数 BITOP AND/OR/XOR dest k1 k2 # 位运算