当前位置: 首页 > news >正文

[架构之美]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

十一、可视化工具推荐

  1. RedisInsight:官方GUI工具,支持集群管理
  2. Another Redis Desktop Manager:跨平台桌面客户端
  3. Redli:命令行替代工具,支持TLS和管道
  4. Grafana+Prometheus:监控可视化方案

总结

本文涵盖了Redis从基础操作到高级应用的全方位命令指南。关键要点:

  1. 使用SCAN替代KEYS避免生产阻塞
  2. 事务和Lua脚本保证操作原子性
  3. 合理选择数据结构提升性能
  4. 启用ACL和TLS加固安全

附录

  • Redis命令官方文档
  • Redis内存优化白皮书
  • 分布式锁实现方案

希望本教程对您有帮助,请点赞❤️收藏⭐关注支持!欢迎在评论区留言交流技术细节!

相关文章:

  • 网站测试设计历下区百度seo
  • 注册公司上什么网站利尔化学股票最新消息
  • 南高齿网站是谁做的网络销售网站
  • 怎样做免费网站的推广百度商家入驻
  • 滨湖区建设局官方网站企业网络营销策略案例
  • 大连seo建站公司最有效的恶意点击软件
  • 在树莓派上用 .NET8.0 挂载TCP服务端
  • vscode管理go多个版本
  • 测试平台ui自动化demo说明
  • 操作系统之内存管理(王道)
  • 5. Pytest失败重跑机制pytest-rerunfailures
  • MAC、IP地址、TCP、UDP、SSL、OSI模型
  • IoT/HCIP实验-5/基于NB-IoT的智慧农业实验(平台侧开发+端侧编码+基础调试分析)
  • React 第六十四节Router中HashRouter的使用详细介绍及案例分析
  • Java基础(四):位运算符详解
  • SpringCloud系列(36)--SpringCloud Gateway简介
  • [TcpConnection]
  • 融合聚类与分类的退役锂电智能分选技术:助力新能源汽车产业可持续发展
  • 深度学习实战112-基于大模型Qwen+RAG+推荐算法的作业互评管理系统设计与实现
  • 如何在 Manjaro Linux 上安装 Docker 容器
  • 记一次AWS 中RDS优化费用使用的案例
  • 用 Docker 构建你的第一个 Python Flask 程序
  • MiniMax-M1 混合专家模型与 DeepSeek 一体机的能效革命
  • 命名数据网络 | TLV 编码
  • 左神算法之有序二维矩阵中的目标值查找
  • Vue基础(16)_Vue侦听数据改变的原理(对象)、Vue.set/vm.$set方法的使用