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


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

一、Redis命令使用须知

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

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

1. 字符串(String)类型

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

场景示例

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

2. 哈希(Hash)类型

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

对象存储示例

> HSET user:1001 name "张三" age 28 email "zhangsan@example.com"
> 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命令观察实际命令执行情况。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值