当前位置: 首页 > 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内存优化白皮书
  • 分布式锁实现方案

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

http://www.lqws.cn/news/512893.html

相关文章:

  • 左神算法之二叉树最大路径和问题
  • RedisVL EmbeddingsCache深度实践与最佳指南
  • LangGraph--基础学习(Human-in-the-loop 人工参与深入学习2)
  • 在智慧教育行业中,OPS插拔式电脑启到什么作用
  • 【沉浸式解决问题】微服务子模块引入公共模块的依赖后无法bean未注入
  • 磁悬浮轴承温度漂移克星:三招实现精准控制
  • 桌面小屏幕实战课程:DesktopScreen 9 GPIO
  • 轻巧灵动,智启未来 ——Kinova Gen3 Lite 机器人轻松解锁各行业自动化新姿势
  • 集成学习基础:Bagging 原理与应用
  • 多模态大模型(从0到1)
  • CRMEB PHP多门店版v3.2.1系统全开源+Uniapp前端+搭建教程
  • 【stm32】标准库学习——USART串口
  • 2023年全国青少年信息素养大赛Python 复赛真题——玩石头游戏
  • 大模型时代的创业机遇
  • 左神算法之双集合平均值优化操作的最大次数
  • SIAM-2011《Weighted Graph Compression for Parameter-free Clustering With PaCCo》
  • 【基础篇-消息队列】—— 如何实现单个队列的并行消费及如何保证消息的严格顺序
  • 爬取小红书相关数据导入到excel
  • SpringCloud系列(35)--使用HystrixDashboard进行服务监控
  • 《汇编语言:基于X86处理器》第4章 数据传送、寻址和算术运算(2)
  • 行为验证码 AJ-Captcha 使用文档
  • Golang Kratos 系列:领域层model定义是自洽还是直接依赖第三方(三)
  • C++字符串的行输入
  • MySQL之SQL性能优化策略
  • 《仿盒马》app开发技术分享-- 兑换列表展示(68)
  • git操作练习(3)
  • 【Python-Day 29】万物皆对象:详解 Python 类的定义、实例化与 `__init__` 方法
  • SQL Server从入门到项目实践(超值版)读书笔记 18
  • git commit --no-verify -m ““ 命令的作用是什么
  • LangChain网页自动化PlayWrightBrowserToolkit