SET key value # 存
GET key # 取
MSET k1 v1 k2 v2 # 批量存
MGET k1 k2 # 批量取
INCR key # 数字+1
DECR key # 数字-1
EXPIRE key 10 # 10秒过期
SETNX key value # 不存在才存(分布式锁)
场景
单值缓存:配置、计数器、限流计数
对象缓存:直接存 JSON
分布式锁:SET lock true EX 10 NX
(2)Hash 哈希
用途:一个 key 里存多个字段,适合对象、购物车,比 String 省内存、改字段方便。
结构图
bash复制代码
key
├─ field1 → value1
├─ field2 → value2
└─ field3 → value3
user:1
├─ name → roy
└─ age → 20
常用命令
bash复制代码
HSET k f v # 设字段
HGET k f # 取字段
HMSET k f1 v1 f2 v2 # 批量设
HMGET k f1 f2 # 批量取
HDEL k f # 删字段
HGETALL k # 查所有
HINCRBY k f 1 # 字段数字+1
场景
用户信息:user:1 {name,age,balance}
购物车:cart:uid {goodsId → count}
(3)List 列表
用途:有序、可重复、两头进出,做队列、栈、消息流。
结构图
bash复制代码
key → [a][b][c][d]
索引: 0 1 2 3
负数: -4 -3 -2 -1
常用命令
bash复制代码
LPUSH k v # 左边头插
RPUSH k v # 右边尾插
LPOP k # 左出头
RPOP k # 右出尾
LRANGE k 0 -1 # 查全部
BLPOP k 0 # 阻塞左出(0=一直等)
场景
栈:LPUSH + LPOP
队列:LPUSH + RPOP
消息队列:LPUSH + BRPOP
时间线 /feed 流:文章列表、动态列表
(4)Set 集合
用途:无序、元素不重复,做点赞、关注、共同好友、去重。
结构图
bash复制代码
key → {a, b, c, d}
(无序,无重复)
常用命令
bash复制代码
SADD k v # 加元素
SREM k v # 删元素
SMEMBERS k # 查所有
SCARD k # 数量
SISMEMBER k v # 是否存在
SRANDMEMBER k 2 # 随机取2个(不删)
SPOP k 1 # 随机弹出1个(删除)
# 集合运算
SINTER s1 s2 # 交集(共同好友)
SUNION s1 s2 # 并集
SDIFF s1 s2 # 差集
ZADD k 100 a # 加分值元素
ZREM k a # 删元素
ZSCORE k a # 查分数
ZINCRBY k 5 a # 分数+5
ZCARD k # 元素数
ZRANGE k 0 9 # 正序前10
ZREVRANGE k 0 9 WITHSCORES # 倒序前10+分数
ZUNIONSTORE dest 2 s1 s2 # 合并榜单
XADD k * name roy # 发消息(*自动生成id)
XRANGE k - + # 查全部消息
XGROUP CREATE k g1 0 # 创建消费组
XREADGROUP GROUP g1 c1 STREAMS k > # 消费未读消息
XPENDING k g1 # 查看消费进度/待确认