Redis是大型架构核心,下面我详解Redis开发命令@mikechen
一、Redis基础命令
1. SET:设置缓存数据(最常用)
命令
SET key value
示例
SET user:1001 "mikechen"
结果:
OK
查询:
GET user:1001
返回:
mikechen
常用扩展参数
设置过期时间
SET user:1001 "mikechen" EX 3600
表示:
3600秒后自动删除
等价:
SETEX user:1001 3600 "mikechen"
不存在才创建(分布式锁核心)
SET lock:user 1 NX EX 30
含义:
| 参数 | 作用 |
|---|---|
| NX | 不存在才创建 |
| EX | 过期时间 |
| 30 | 30秒 |
应用:
秒杀库存扣减
订单防重复提交
分布式任务锁
2. GET:获取缓存数据
命令
GET key
示例:
GET user:1001
返回:
mikechen
业务场景:
用户信息缓存
数据库:
MySQL
缓存:
Redis
请求:
Redis -> MySQL
典型缓存架构:
请求
|
↓
Redis缓存
/ \
有 无
| |
返回数据 查询MySQL
|
写入Redis
二、Key管理命令
3. EXISTS:判断Key是否存在
命令
EXISTS key
示例:
EXISTS user:1001
返回:
1
表示存在。
返回:
0
表示不存在。
应用:
- 防止重复创建
- 判断缓存是否命中
4. DEL:删除Key
命令
DEL key
示例:
DEL user:1001
返回:
1
常见场景:
删除缓存
例如:
更新数据库:
修改用户昵称
|
↓
更新MySQL
|
↓
删除Redis缓存
下一次查询重新加载。
5. EXPIRE:设置过期时间
命令
EXPIRE key seconds
示例:
EXPIRE user:1001 3600
表示:
1小时后过期
查看剩余时间:
TTL user:1001
返回:
3500
单位:
秒。
业务:
验证码:
发送验证码
|
Redis保存
|
60秒过期
例如:
SET sms:code 123456 EX 60
三、Hash结构命令
Redis Hash类似Java中的:
Map<String,Object>
结构:
user:1001
{
name:"mikechen",
age:18,
city:"杭州"
}
6. HSET:保存对象属性
命令
HSET key field value
示例:
HSET user:1001 name mikechen
继续添加:
HSET user:1001 age 18
查询:
HGET user:1001 name
结果:
mikechen
查询全部:
HGETALL user:1001
结果:
name mikechen
age 18
应用:
用户对象缓存:
User对象
↓
Redis Hash
↓
user:10001
四、计数命令
7. INCR:自增
命令
INCR key
示例:
INCR article:view
第一次:
1
第二次:
2
应用场景:
浏览量统计
文章访问一次
Redis:
article:view=10001
INCR
↓
10002
秒杀库存
库存:
stock=100
扣减:
DECR stock
五、集合命令
8. SADD:添加集合元素
Redis Set:
特点:
无序
不重复
命令:
SADD key value
示例:
SADD user:tags java
SADD user:tags redis
SADD user:tags kafka
查询:
SMEMBERS user:tags
结果:
java
redis
kafka
应用:
用户标签
用户:
Java
Redis
AI
架构
推荐系统
共同兴趣:
用户A标签集合
∩
用户B标签集合
9. SISMEMBER:判断集合是否存在
命令:
SISMEMBER key value
示例:
SISMEMBER user:tags java
返回:
1
应用:
判断:
用户是否点赞
用户是否关注
用户是否收藏
六、List队列命令
10. LPUSH:左侧添加元素
Redis List:
结构:
A -> B -> C
命令:
LPUSH queue task1
结果:
task1
继续:
LPUSH queue task2
结果:
task2 task1
应用:
消息队列:
订单任务
Redis List
生产者
|
LPUSH
消费者
|
RPOP
七、排序集合ZSet
11. ZADD:添加排行榜数据
Redis ZSet:
特点:
有序
带分数
命令:
ZADD rank score member
示例:
ZADD rank 100 userA
ZADD rank 200 userB
查询:
ZRANGE rank 0 -1 WITHSCORES
结果:
userA 100
userB 200
应用:
排行榜
游戏:
玩家积分
1000
2000
5000
自动排序
场景:
- 游戏排行榜
- 热搜排行
- 商品销量排行
八、事务命令
12. MULTI / EXEC:事务执行
Redis事务:
MULTI
|
多个命令
|
EXEC
示例:
MULTI
SET user:name mikechen
SET user:age 18
EXEC
一次提交。
应用:
账户扣款:
余额减少
+
积分增加
保证一起执行。
九、分布式锁命令
13. SET NX EX:实现分布式锁
这是企业开发最重要Redis命令组合。
示例:
SET order_lock 1 NX EX 30
含义:
如果没有锁
↓
创建锁
↓
30秒自动释放
流程:
请求A
SET NX成功
获得锁
请求B
SET NX失败
等待
释放锁:
DEL order_lock