当前位置:首页 > 问答 > 正文

Redis运维那些命令你得知道,别光看文档,这里全给你整理了

(根据网络技术社区如CSDN、博客园、开源中国等平台上多位运维工程师的经验分享整理)

Redis这玩意儿,现在做项目基本离不开它,性能是真好,但运维起来要是不会几个关键命令,那真是两眼一抹黑,出了问题只能干着急,光看官方文档那一大堆说明,容易看晕,这里给你划重点,把那些真正用得上的运维命令给你捋一捋,都是老运维们踩过坑总结出来的。

先说说怎么看看Redis是不是还“活着”——状态监控命令

  1. ping命令 这个最简单了,就像问“在吗?”,你在命令行里打一个ping,如果Redis服务正常,它会回你一个PONG,要是没反应或者报错,那八成是服务挂掉了或者网络不通了,这是最快速检查服务可用性的方法。

  2. info命令 这个是超级大全,Redis的所有运行信息都在里面,你直接打info,会刷出一大屏信息,可能看着头疼,一般我们会有针对性地看:

    • 想看内存情况:info memory,重点看used_memory(用了多少内存)、used_memory_human(以人类好读的格式显示用了多少内存,比如多少M、多少G)、maxmemory(你设置的最大内存限制),要是used_memory快接近maxmemory了,就得警惕了,可能会开始删数据或者写不进去了。
    • 想看客户端连接数:info clients,重点看connected_clients(当前连接的客户端数量),如果这个数异常的高,可能是有程序没正确关闭连接,导致连接数耗尽,新的客户端就连不进来了。
    • 想看持久化情况:info persistence,如果你用了RDB或AOF做数据持久化,这里能看到最近一次持久化成功没有、花了多久时间等信息,如果rdb_last_bgsave_status不是ok,说明上次备份失败了,得查原因。
    • 想看主从复制状态:info replication,如果你是主从架构,这里能看到它现在是主节点还是从节点,连了哪些从节点,复制偏移量是多少,复制状态是否正常,如果从节点的lag值很大,说明数据同步延迟很严重。

钥匙太多了,怎么管理?——Key(键)相关命令

Redis运维那些命令你得知道,别光看文档,这里全给你整理了

Redis里存的数据都叫key,数据多了就得管理。

  1. keys pattern命令 这个命令用来查找符合特定模式的key,比如你想找所有以user:session:开头的key,就用keys user:session:*但是要特别注意! 这个命令在生产环境要慎用,因为如果你的Redis里key特别多,这个命令会一次性遍历所有key,可能导致Redis服务卡住一会儿,俗称“炸库”,除非你确定key很少,或者是在维护时段,否则别用。

  2. scan命令 这是keys的安全替代品,它不会一次性列出所有key,而是分批遍历,不会阻塞Redis太久,用法像这样:scan 0 match user:session:* count 100,这里的0表示从头开始游标,执行一次后它会返回一个新的游标值和一部分key,你再用新的游标值继续scan,直到它返回游标0才算遍历完,虽然麻烦点,但对服务影响小。

  3. ttl key命令 查看某个key还有多少秒过期,返回-2表示这个key已经不存在了;返回-1表示这个key没有设置过期时间,会一直存在(除非被手动删除),经常用来检查设置的过期时间对不对。

  4. type key命令 看看某个key是什么数据类型的,是字符串(string)、列表(list)、哈希(hash)、集合(set)还是有序集合(zset),有时候排查问题需要先确定类型。

    Redis运维那些命令你得知道,别光看文档,这里全给你整理了

内存告急怎么办?——内存分析命令

  1. memory usage key命令 估算一个key和它的值大概占了多大内存,对于排查哪些大key占用了过多内存非常有用。

  2. memory stats命令 显示详细的内存使用统计信息,比info memory更细致,适合深度排查内存问题。

服务器内部在干嘛?——诊断命令

  1. slowlog get [n]命令 这是神器!Redis会把执行时间超过一定阈值(慢查询阈值,可以用config set slowlog-log-slower-than设置,单位微秒)的命令记录下来,你用slowlog get 10就能查看最慢的10条命令,很多时候性能瓶颈就是由几个慢查询引起的,通过这个命令就能抓出来。

    Redis运维那些命令你得知道,别光看文档,这里全给你整理了

  2. monitor命令 这是一个实时打印所有Redis正在执行的命令的工具。警告:这也是一个超级危险的命令! 它会在屏幕上疯狂刷屏,对性能影响很大,只适合在测试环境或者生产环境万不得已时短时间使用,用完赶紧按Ctrl+C停掉,主要用于实时观察到底有哪些客户端在执行什么操作。

日常维护操作

  1. config get/set parameter命令 动态查看或修改Redis的配置参数,不用重启服务,比如临时把慢查询日志的阈值调大一点:config set slowlog-log-slower-than 20000,但要注意,用config set修改的配置在重启后会失效,永久生效需要修改配置文件。

  2. bgsave命令 手动触发一次RDB持久化,也就是在后台把当前数据快照保存到磁盘上,Redis会fork一个子进程来做这个事,主进程还能继续服务,定期执行备份是保证数据安全的重要一环。

  3. client list / client kill命令 client list可以列出所有连接到Redis的客户端详细信息,包括IP、端口、空闲时间等,如果发现异常连接,可以用client kill ip:port把它踢掉。

把这些命令玩熟了,日常大部分的Redis运维问题你基本都能自己动手排查和解决了,真遇到复杂问题还得结合日志和更深入的原理分析,但这些命令是你上手的第一步,也是最重要的一步。