Redis作为高性能内存数据库,掌握其核心命令是开发者的必备技能。本文将全面整理Redis客户端常用命令,涵盖基础操作到高级应用场景,帮助您快速成为Redis操作高手!
# 本地连接(默认端口6379)
redis-cli
# 远程连接(带密码认证)
redis-cli -h <host> -p <port> -a <password>
# 示例:
redis-cli -h redis.prod.com -p 6380 -a MySecureP@ss123
# 通过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访问控制
命令 | 说明 | 示例 |
---|---|---|
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 |
# 模式匹配查找(生产慎用)
KEYS user:*
# 安全遍历(推荐)
SCAN 0 MATCH order:* COUNT 100
性能警告:KEYS命令会阻塞整个服务,生产环境使用SCAN替代
SET counter:visits 1000 # 设置值
GET counter:visits # 获取值
APPEND log:error "DB connection failed" # 追加内容
STRLEN user:1001:bio # 获取长度
INCR page:views # 自增1
INCRBY cart:1001 5 # 增加指定数值
DECR inventory:item42 # 自减1
# 批量操作
MSET config:timeout 30 config:max_conn 100
# 带过期时间设置
SETEX session:abcd 3600 "user_data"
# 不存在时设置(分布式锁基础)
SETNX lock:resource1 "owner"
命令 | 说明 | 示例 |
---|---|---|
HSET user:1001 name "John" |
设置字段 | |
HGET user:1001 email |
获取字段 | |
HDEL user:1001 phone |
删除字段 | |
HINCRBY user:1001 points 10 |
数值增减 |
# 设置多个字段
HMSET product:123 name "Laptop" price 1299 stock 50
# 获取所有字段
HGETALL product:123
# 仅获取字段名
HKEYS config:app
# 仅获取字段值
HVALS user:1001
LPUSH tasks "clean_db" # 左侧插入
RPUSH notifications "msg" # 右侧插入
LPOP tasks # 左侧弹出
RPOP notifications # 右侧弹出
# 获取指定范围元素
LRANGE logs 0 9 # 前10条日志
# 列表修剪
LTRIM recent_users 0 99 # 保留最新100条
# 阻塞弹出
BLPOP orders 30 # 等待30秒获取订单
SADD tags:post42 "database" "nosql" # 添加成员
SREM tags:post42 "legacy" # 删除成员
SISMEMBER admins "alice" # 检查存在
SMEMBERS online_users # 获取所有成员
# 交集(共同好友)
SINTER user:1001:friends user:1002:friends
# 并集(所有标签)
SUNION post:42:tags post:43:tags
# 差集(特殊权限)
SDIFF all_users banned_users
ZADD leaderboard 95 "player1" # 添加成员
ZINCRBY leaderboard 5 "player1" # 增加分数
ZSCORE leaderboard "player1" # 查看分数
# 按分数升序
ZRANGE leaderboard 0 9 WITHSCORES # 前10名
# 按分数降序
ZREVRANGE leaderboard 0 9 WITHSCORES
# 分数范围查询
ZRANGEBYSCORE temperatures 20 30 # 20-30度区间
INFO memory # 内存使用详情
INFO stats # 命令统计信息
INFO replication # 复制状态
CLIENT LIST # 查看所有连接
CLIENT KILL ADDR 1.2.3.4:5678 # 断开指定客户端
CLIENT SETNAME "worker-1" # 设置连接名称
CONFIG GET maxmemory # 获取配置
CONFIG SET timeout 300 # 动态修改配置
CONFIG REWRITE # 持久化配置到文件
MULTI
SET balance:1001 500
DECR inventory:item42
EXEC # 提交事务
# 事务回滚
MULTI
SET tmp "value"
DISCARD
-- 原子性扣减库存
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
# 批量执行命令(减少网络开销)
(echo -en "PING\r\nPING\r\nPING\r\n"; sleep 1) | nc localhost 6379
# 启用ACL(Redis 6+)
ACL SETUSER alice on >p@ssw0rd ~cached:* +get +set
# 禁用危险命令
rename-command FLUSHDB ""
rename-command CONFIG ""
# 内存分析
redis-cli --bigkeys
# 热点键检测
redis-cli --hotkeys
# 数据备份
redis-cli --rdb /backup/dump.rdb
# 慢查询日志
SLOWLOG GET 10
# 内存碎片检测
INFO memory | grep ratio
# 连接问题诊断
redis-cli --latency -h redis-host
性能数据参考:在4核8G服务器上,Redis可处理10万+ QPS,平均延迟<1ms
本文涵盖了Redis从基础操作到高级应用的全方位命令指南。关键要点:
SCAN
替代KEYS
避免生产阻塞附录:
希望本教程对您有帮助,请点赞❤️收藏⭐关注支持!欢迎在评论区留言交流技术细节!