尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

从入门到精通:redis-cli命令行实战全解析

从入门到精通:redis-cli命令行实战全解析
📅 发布时间:2026/6/28 21:34:18

1. Redis-cli基础连接与运维实战

第一次接触redis-cli时,我盯着黑乎乎的终端窗口有点发怵。这玩意儿真的比图形界面好用吗?直到有次服务器内存告急,我用三行命令批量清理了20GB缓存数据,才明白命令行才是运维的真爱。让我们从最基础的连接开始,逐步解锁redis-cli的真正威力。

1.1 本地无密码连接

最简单的连接方式莫过于直接敲入redis-cli,这相当于对本地6379端口的Redis发起"你好"的问候。我习惯先敲个PING测试连通性,看到PONG回应就像听到老朋友的应答。不过实际生产环境几乎不会这么简单,就像我家大门从不装锁一样危险。

$ redis-cli 127.0.0.1:6379> PING PONG

1.2 远程认证连接

当Redis住在另一台服务器时,我们需要带上"门禁卡":-h指定IP就像输入地址,-p是门牌号(默认6379),-a则是密码钥匙。有次我忘了加-a参数,反复连接十几次都失败,最后发现终端里赫然显示着"(error) NOAUTH Authentication required"——这感觉就像刷卡时机器不断提示"请重试"。

redis-cli -h 192.168.1.100 -p 6379 -a your_strong_password

1.3 带缓存的原子操作

组合命令才是redis-cli的精华所在。比如要清理缓存并立即检查剩余key数量,可以用管道符一气呵成。曾经有个电商大促前,我用这个组合拳5秒内清空了商品缓存:

redis-cli -h redis.prod.com -a $REDIS_PWD flushall && redis-cli -h redis.prod.com -a $REDIS_PWD dbsize

1.4 多数据库切换

Redis默认有16个数据库(0-15),就像写字楼的楼层。用-n参数直达目标楼层,配合select命令随时切换。有次我误操作把测试数据写进了生产库,就是忘了这个关键参数。现在我的终端提示符永远显示着当前库编号:

redis-cli -n 1 127.0.0.1:6379[1]> SELECT 0 OK 127.0.0.1:6379>

2. 键值操作的黑科技

2.1 批量操作秘籍

用mget/mset批量操作键值对时,记得控制每次操作的数量。我曾在线上环境一次性获取10万个key,直接导致Redis短暂阻塞。后来学乖了,用这个shell脚本分批次处理:

for i in {0..9}; do redis-cli --eval batch_ops.lua $i , 10000 done

配套的Lua脚本能精准控制每次操作的key范围。这种方案比单纯用keys *安全得多,毕竟keys命令会引发全库扫描——相当于让Redis停下所有工作来陪你玩寻宝游戏。

2.2 过期时间的魔法

给热key设置过期时间是个技术活。有次我设置了expire user:123 3600,结果用户投诉每到整点就掉线。原来key在恰好满1小时时消失,应该用expireat指定具体过期时刻:

# 设置明天凌晨2点过期 redis-cli expireat user:123 $(date -d "tomorrow 02:00" +%s)

2.3 非阻塞删除技巧

直接del大key可能导致服务卡顿,就像突然搬走整面书柜会堵住走廊。unlink命令就聪明多了,它先标记要删除的key,等Redis闲下来再慢慢清理。实测删除1GB的hash结构,用unlink能减少80%的延迟波动。

3. 数据类型实战宝典

3.1 字符串的隐藏玩法

除了基本的set/get,字符串类型还能玩出花样。比如用INCR做秒杀计数器,配合EXPIRE自动清零;用SETNX实现分布式锁时,一定要设置超时——有次我忘了设,导致系统死锁两小时。更安全的做法是:

redis-cli setnx lock:order "1" && redis-cli expire lock:order 30

3.2 列表消息队列

用LPUSH/RPOP实现简易消息队列时,记得加个BRPOP做阻塞读取。我早期用轮询检查新消息,把CPU利用率拉高了30%。后来改成这样,既省资源又实时:

while true; do redis-cli brpop task_queue 0 # 处理消息... done

3.3 集合的社交应用

用户关注关系用集合再合适不过。SINTER计算共同好友,SUNION合并兴趣标签,SDIFF推荐可能认识的人。有个千万用户的应用,用下面这条命令3毫秒算出两人的共同群组:

redis-cli sinter user:1000:groups user:2000:groups

4. 运维监控高阶技巧

4.1 性能诊断三板斧

INFO命令是我的急救包。INFO memory看内存碎片率,超过1.5就该重启了;INFO persistence检查RDB/AOF状态;INFO stats里的instantaneous_ops_per_sec是实时QPS。有次大促,我就是靠这个发现有个客户端在疯狂执行keys *。

4.2 管道加速批处理

当需要插入10万条测试数据时,单条发送要半小时。用管道技术能提速50倍,原理是把多个命令打包发送。这是我常用的模板:

echo -e "SET k1 v1\nSET k2 v2" | redis-cli --pipe

4.3 Lua脚本原子操作

用EVAL执行Lua脚本就像在Redis内部运行小程序。有次要实现先检查再扣库存的逻辑,用Lua脚本完美避免竞态条件:

local stock = tonumber(redis.call('GET', KEYS[1])) if stock > 0 then redis.call('DECR', KEYS[1]) return 1 end return 0

调用时只需:redis-cli --eval decr_stock.lua item:123

相关新闻

  • Go语言国密全栈方案gmsm实战:从算法到TLS的完整指南
  • 国内大模型与国外大模型的差距在哪里
  • 基于LLM的知识图谱自动构建系统:从非结构化数据到结构化知识的智能转换

最新新闻

  • 蓝桥杯嵌入式实战:串口通信协议解析与停车场管理系统实现
  • 软考AI新科目通过率仅38.7%?揭秘阅卷组长透露的4个致命扣分点及对应避坑模板(内含阅卷细则原文节选)
  • 3步掌握N_m3u8DL-RE:跨平台流媒体下载终极指南
  • Coppeliasim仿真进阶:解锁B0 Remote API的Python高效联动
  • n8n高危漏洞深度剖析:认证绕过与RCE攻击链的修复与加固
  • 第七篇:Redis 为什么要同时支持 RDB 和 AOF?

日新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号