Redis 运维规范_命令使用规范

梦莱2年前技术文章598

二、命令使用规范

1、keys *

keys * 命令原理是扫描整个 Redis 里面所有 key,该命令执行期间其他发送向 Redis 服务端的命令,都会被阻塞。scan 命令是一个基于游标的迭代器,可以每次少量多次的返回数据。

命令

keys

scan

优点

速度很快

不会造成长时间阻塞

缺点

Redis 单线程,执行期间会阻碍其他命令的执行,导致性能问题

返回结果可能重复,需要客户端去重,整体执行时间可能要比keys命令长

基于 scan 的这种安全性,建议 Redis 版本为 2.8.0 及以上的生产环境,考虑使用 scan 命令来代替 keys 。

2、复杂命令

(1)遍历

例如对于 List 类型,它的两种底层实现结构:双向链表和压缩列表的操作复杂度都是 O(N);如果使用遍历复杂度为O(n),对于大 key 来说就会有时延等性能问题;对于 List 类型,它的 POP/PUSH 效率很高,可以尽量将它主要用于 FIFO 队列场景。

图片2.png

(2)聚合命令

聚合命令需谨慎使用。对于数据的聚合操作应由客户端或者只读实例完成,尽量避免让 Redis 进行 SUNIONSTORE 、SDIFFSTORE 等聚合命令,这些操作会消耗大量 CPU 资源,导致主线程繁忙。如果不可避免要执行这类命令,要保证 N 尽量小。

对于遍历操作建议尽量使用对应的 SCAN 操作(包括 HSCAN,SSCAN, ZSCAN) 代替,避免在 Redis 内部产生费时的全集合遍历操作。

3、高危命令

对于一些高危命令包括keys、 flushdb、flushall 等。主要需要注意以下两点:

(1) 例如执行 FLUSHALL 会直接清空全部数据,FLUSHDB 清空当前库。对于该类命令等执行要慎重。

(2)由于 Redis 对读写请求都为单线程工作,如果执行命令涉及大量操作或耗时较长,都会阻塞主线程导致其它请求无法正常进行。

建议:云上 Redis 可以在控制台上通过设置 #no_loose_disabled-commands 参数来禁用一些可能影响 Redis 服务性能、危害数据安全的命令。

4、大 key 删除

(1) 对于 Redis 4.0 及之后版本,可以通过 UNLINK 命令安全地删除大 Key 甚至特大Key,该命令能够以非阻塞的方式,逐步地清理传入的Key

unlink key 命令:根据 value 选择非阻塞删除,仅将 keys 从 keyspace 元数据中删除,真正的删除会在后续异步操作。

(2)对于 Redis 2.8 之后及 Redis 4.0 之前,可以通过 SCAN 命令读取部分数据,然后进行删除,避免一次性删除大量 key 导致 Redis 阻塞。

5、monitor 命令

Redis 的 MONITOR 命令能够忠实地打印 Redis 中的所有请求,包括时间信息、Client信息、命令以及Key信息。在发生紧急情况时,可以通过短暂执行 MONITOR 命令并将返回信息输入至文件,对文件中请求进行归类分析,找出这段时间中的热 Key 。但 Monitor 本身对 Redis 的性能有一定的影响,若不进行相关问题排查和分析时,不建议开启。


相关文章

Docker Engine - Containerd

Docker Engine - Containerd

1、背景Docker 崛起很久以前,Docker 强势崛起,以 “镜像” 这个大招席卷全球,对其他技术进行致命的降维打击,使其毫无招架之力,就连 Google 也不例外。Google 为了不被拍死在沙...

trino开启https

trino开启https

一、生成https证书(所用到的openssl和keytool命令都是linux自带的)配置https证书:(1)创建目录[hdfs@hadoop01 hadoop]# mkdir -p /data/...

大数据自动化巡检系统EasyCare使用简介

大数据自动化巡检系统EasyCare使用简介

1、EasyCare登录填写系统初始化用户密码之后登录系统,进入系统首页2、系统首页系统首页显示当前巡检的集群数量,巡检指标,巡检模版,当天巡检情况等3、配置管理配置管理菜单配置初始化巡检基础信息,包...

sparksql集成ranger权限测试

sparksql集成ranger权限测试

##启动thriftserver cd /opt/dtstack/spark/spark_pkg/sbin ./start-thriftserver.sh \ --master yarn \...

python-日志分析

1、概述生产中会生成大量的系统日志、应用程序日志、安全日志等等日志,通过对日志的分析可以了解服务器的负载、健康状况,可以分析客户的分布情况、客户的行为,甚至基于这些分析可以做出预测。一般采集流程:日志...

大数据平台袋鼠云托管运维与自建集群运维对比

对比维度袋鼠云托管运维自建hadoop集群运维成本根据业务需求定制架构,预估业务增涨合理规划,低成本高性价比需自行预估资源,规划架构性能大量集群优化经验,根据业务需求进行点对点优化采用开源社区版本,性...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。