Redis常用命令详解:从基础到高阶应用指南


Redis常用命令详解:从基础到高阶应用指南

一、Redis命令使用须知

  1. 两种连接方式
    • 命令行工具:redis-cli
    • 编程客户端(Java/Python等)
  2. 通用语法COMMAND KEY [PARAMS]
  3. 返回值类型
    • 简单字符串(Simple Strings)
    • 错误信息(Errors)
    • 整型(Integers)
    • 批量字符串(Bulk Strings)
    • 数组(Arrays)

二、核心数据类型操作命令

1. 字符串(String)类型

命令 语法 时间复杂度 说明
SET SET key value [EX seconds][PX milliseconds][NX|XX] O(1) 支持过期时间和存在性判断
GET GET key O(1) 获取字符串值
INCR INCR key O(1) 原子递增计数器
MSET MSET key1 value1 [key2 value2...] O(N) 批量设置值
GETSET GETSET key new_value O(1) 设置新值返回旧值

场景示例

> SET user:1001:points 500 EX 3600 NX  # 设置1小时过期的积分
> INCR article:2023:views              # 文章阅读量统计
> MSET config:timeout 30 config:maxconn 1000

2. 哈希(Hash)类型

命令 语法 说明
HSET HSET key field value 设置单个字段
HGET HGET key field 获取字段值
HMSET HMSET key field1 value1 [field2 value2...] 批量设置字段(已弃用,建议用HSET)
HGETALL HGETALL key 获取所有字段(慎用大数据量)
HSCAN HSCAN key cursor [MATCH pattern][COUNT count] 安全遍历大哈希

对象存储示例

> HSET user:1001 name "张三" age 28 email "[email protected]"
> HINCRBY user:1001 age 1  # 年龄+1

3. 列表(List)类型

命令 作用 典型场景
LPUSH/RPUSH 左/右插入元素 消息队列、最新列表
LPOP/RPOP 左/右弹出元素 任务队列消费
BLPOP/BRPOP 阻塞式弹出 实时消息系统
LRANGE 范围查询 分页查询历史记录
LTRIM 修剪列表 维护固定长度队列

队列实现示例

> LPUSH orders:queue "order_1001"
> BRPOP orders:queue 30  # 阻塞30秒等待任务

三、高级功能命令

1. 事务控制

> MULTI          # 开启事务
> SET key1 100
> INCR key1
> EXEC           # 执行事务

2. 发布订阅

# 终端1(订阅)
> SUBSCRIBE news

# 终端2(发布)
> PUBLISH news "重大系统更新通知"

3. Lua脚本

EVAL "return redis.call('GET', KEYS[1])" 1 mykey

四、系统管理命令

1. 持久化控制

命令 说明
SAVE 阻塞式保存RDB
BGSAVE 后台保存RDB
AOF 通过配置启用AOF持久化

2. 性能分析

> SLOWLOG GET 5  # 获取最近5条慢查询
> INFO MEMORY    # 查看内存使用详情

3. 集群管理

> CLUSTER NODES    # 查看集群节点
> CLUSTER INFO     # 集群状态概览
> CLUSTER FAILOVER # 手动故障转移

五、最佳实践与注意事项

1. 键命名规范

  • 使用业务:类型:ID格式:user:profile:1001
  • 避免特殊字符,统一使用小写
  • 控制键长度(推荐≤128字节)

2. 危险命令规避

# 生产环境禁用
KEYS *             # 使用SCAN代替
FLUSHALL/FLUSHDB   # 数据清除命令
CONFIG SET ...     # 动态配置修改

3. 性能优化技巧

  • Pipeline批量操作减少RTT
  • 大Value拆分(Hash使用HSCAN)
  • 合理设置过期时间

六、命令速查表(Cheat Sheet)

类别 必备命令
通用命令 DEL, EXISTS, EXPIRE, TTL, TYPE
字符串 SET, GET, INCR, DECR, STRLEN
哈希 HSET, HGET, HDEL, HKEYS, HLEN
列表 LPUSH, RPOP, LLEN, LINDEX, LINSERT
集合 SADD, SMEMBERS, SISMEMBER, SUNION
有序集合 ZADD, ZRANGE, ZSCORE, ZREVRANK

七、实战演练案例

案例1:分布式锁实现

# 获取锁
SET lock:order1234 "uuid" NX PX 30000

# 释放锁(Lua脚本保证原子性)
EVAL "if redis.call('GET', KEYS[1]) == ARGV[1] then return redis.call('DEL', KEYS[1]) else return 0 end" 1 lock:order1234 uuid

案例2:排行榜实现

> ZADD leaderboard 95 "PlayerA"
> ZADD leaderboard 87 "PlayerB"
> ZREVRANGE leaderboard 0 2 WITHSCORES  # 获取前三名

八、学习资源推荐

  1. 官方命令文档:https://redis.io/commands
  2. 交互式教程:https://try.redis.io/
  3. Redis Desktop Manager:可视化操作工具

通过系统掌握这些命令,开发者可以充分发挥Redis高性能、高并发的特性,构建稳定可靠的分布式系统。建议结合具体业务场景进行实践,并定期使用MONITOR命令观察实际命令执行情况。

你可能感兴趣的:(redis,数据库,缓存)