[架构之美]Redis客户端命令指南
[架构之美]Redis客户端命令指南
Redis作为高性能内存数据库,掌握其核心命令是开发者的必备技能。本文将全面整理Redis客户端常用命令,涵盖基础操作到高级应用场景,帮助您快速成为Redis操作高手!
一、Redis连接管理
1.1 基础连接方式
# 本地连接(默认端口6379)
redis-cli# 远程连接(带密码认证)
redis-cli -h <host> -p <port> -a <password>
# 示例:
redis-cli -h redis.prod.com -p 6380 -a MySecureP@ss123
1.2 高级连接技巧
# 通过URI连接(支持Redis 6+)
redis-cli -u redis://user:pass@host:port# SSH隧道连接
ssh -L 6379:localhost:6379 user@redis-server# TLS加密连接
redis-cli --tls --cacert /path/to/ca.crt
安全建议:生产环境禁用默认端口,使用
--requirepass
配置密码并启用ACL访问控制
二、键(Key)操作命令
2.1 键基础操作
命令 | 说明 | 示例 |
---|---|---|
EXISTS key | 检查键是否存在 | EXISTS user:1001 |
TYPE key | 查看键数据类型 | TYPE session:abcd |
TTL key | 查看剩余过期时间 | TTL temp:lock |
PTTL key | 毫秒级过期时间 | PTTL rate_limit |
RENAME key newkey | 重命名键 | RENAME old_key new_key |
2.2 键查找与遍历
# 模式匹配查找(生产慎用)
KEYS user:*# 安全遍历(推荐)
SCAN 0 MATCH order:* COUNT 100
性能警告:KEYS命令会阻塞整个服务,生产环境使用SCAN替代
三、字符串(String)操作
3.1 基础CRUD
SET counter:visits 1000 # 设置值
GET counter:visits # 获取值
APPEND log:error "DB connection failed" # 追加内容
STRLEN user:1001:bio # 获取长度
3.2 原子计数器
INCR page:views # 自增1
INCRBY cart:1001 5 # 增加指定数值
DECR inventory:item42 # 自减1
3.3 高级操作
# 批量操作
MSET config:timeout 30 config:max_conn 100# 带过期时间设置
SETEX session:abcd 3600 "user_data"# 不存在时设置(分布式锁基础)
SETNX lock:resource1 "owner"
四、哈希(Hash)操作
4.1 字段管理
命令 | 说明 | 示例 |
---|---|---|
HSET user:1001 name "John" | 设置字段 | |
HGET user:1001 email | 获取字段 | |
HDEL user:1001 phone | 删除字段 | |
HINCRBY user:1001 points 10 | 数值增减 |
4.2 批量操作
# 设置多个字段
HMSET product:123 name "Laptop" price 1299 stock 50# 获取所有字段
HGETALL product:123# 仅获取字段名
HKEYS config:app# 仅获取字段值
HVALS user:1001
五、列表(List)操作
5.1 基础操作
LPUSH tasks "clean_db" # 左侧插入
RPUSH notifications "msg" # 右侧插入
LPOP tasks # 左侧弹出
RPOP notifications # 右侧弹出
5.2 范围操作
# 获取指定范围元素
LRANGE logs 0 9 # 前10条日志# 列表修剪
LTRIM recent_users 0 99 # 保留最新100条# 阻塞弹出
BLPOP orders 30 # 等待30秒获取订单
六、集合(Set)操作
6.1 成员管理
SADD tags:post42 "database" "nosql" # 添加成员
SREM tags:post42 "legacy" # 删除成员
SISMEMBER admins "alice" # 检查存在
SMEMBERS online_users # 获取所有成员
6.2 集合运算
# 交集(共同好友)
SINTER user:1001:friends user:1002:friends# 并集(所有标签)
SUNION post:42:tags post:43:tags# 差集(特殊权限)
SDIFF all_users banned_users
七、有序集合(Sorted Set)操作
7.1 分数操作
ZADD leaderboard 95 "player1" # 添加成员
ZINCRBY leaderboard 5 "player1" # 增加分数
ZSCORE leaderboard "player1" # 查看分数
7.2 范围查询
# 按分数升序
ZRANGE leaderboard 0 9 WITHSCORES # 前10名# 按分数降序
ZREVRANGE leaderboard 0 9 WITHSCORES# 分数范围查询
ZRANGEBYSCORE temperatures 20 30 # 20-30度区间
八、服务器监控与管理
8.1 实时监控
INFO memory # 内存使用详情
INFO stats # 命令统计信息
INFO replication # 复制状态
8.2 客户端管理
CLIENT LIST # 查看所有连接
CLIENT KILL ADDR 1.2.3.4:5678 # 断开指定客户端
CLIENT SETNAME "worker-1" # 设置连接名称
8.3 配置管理
CONFIG GET maxmemory # 获取配置
CONFIG SET timeout 300 # 动态修改配置
CONFIG REWRITE # 持久化配置到文件
九、高级特性实战
9.1 事务处理
MULTI
SET balance:1001 500
DECR inventory:item42
EXEC # 提交事务# 事务回滚
MULTI
SET tmp "value"
DISCARD
9.2 Lua脚本
-- 原子性扣减库存
EVAL "local stock = redis.call('GET', KEYS[1]) if stock >= ARGV[1] then return redis.call('DECRBY', KEYS[1], ARGV[1]) else return -1 end" 1 inventory:item42 5
9.3 管道批处理
# 批量执行命令(减少网络开销)
(echo -en "PING\r\nPING\r\nPING\r\n"; sleep 1) | nc localhost 6379
十、生产环境最佳实践
10.1 安全加固
# 启用ACL(Redis 6+)
ACL SETUSER alice on >p@ssw0rd ~cached:* +get +set# 禁用危险命令
rename-command FLUSHDB ""
rename-command CONFIG ""
10.2 性能优化
# 内存分析
redis-cli --bigkeys# 热点键检测
redis-cli --hotkeys# 数据备份
redis-cli --rdb /backup/dump.rdb
10.3 故障排查
# 慢查询日志
SLOWLOG GET 10# 内存碎片检测
INFO memory | grep ratio# 连接问题诊断
redis-cli --latency -h redis-host
性能数据参考:在4核8G服务器上,Redis可处理10万+ QPS,平均延迟<1ms
十一、可视化工具推荐
- RedisInsight:官方GUI工具,支持集群管理
- Another Redis Desktop Manager:跨平台桌面客户端
- Redli:命令行替代工具,支持TLS和管道
- Grafana+Prometheus:监控可视化方案
总结
本文涵盖了Redis从基础操作到高级应用的全方位命令指南。关键要点:
- 使用
SCAN
替代KEYS
避免生产阻塞 - 事务和Lua脚本保证操作原子性
- 合理选择数据结构提升性能
- 启用ACL和TLS加固安全
附录:
- Redis命令官方文档
- Redis内存优化白皮书
- 分布式锁实现方案
希望本教程对您有帮助,请点赞❤️收藏⭐关注支持!欢迎在评论区留言交流技术细节!