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

梦莱2年前技术文章649

二、命令使用规范

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 的性能有一定的影响,若不进行相关问题排查和分析时,不建议开启。


相关文章

Wireshark工具使用

Wireshark工具使用

一、介绍wireshark是一款免费、开源的网络抓包工具。项目地址如下:https://github.com/wireshark/wireshark应用如下:1. 网络管理员会使用wireshark来...

Yarn调度器对比

1)Hadoop调度器重要分为三类:FIFO 、Capacity Scheduler(容量调度器)和Fair Sceduler(公平调度器)。Apache默认的资源调度器是容量调度器;CDH...

开源大数据集群部署(二十)Trino部署

开源大数据集群部署(二十)Trino部署

2.9.1 解压trino的包到opt目录cd /root/bigdata tar -xzvf trino-server-389.tar.gz -C /opt/ ln -s /opt/trino-...

ES运维(二)字段类型与内存管理

ES运维(二)字段类型与内存管理

一、ES常见字段类型1、 概述字段是数据存储的最小微粒,根据数据的性质不同将数据分成不同的字段类型,熟悉不同字段类型的特性,对索引的Mapping设计、查询调优都极其重要。2、 关键参数In...

prometheus operator部署(olm方式)

prometheus operator部署(olm方式)

prometheus operator部署(olm方式)olmolm即Operator Lifecycle Manager,是用来管理operator生命周期的工具homepage安装olm首先需要我...

发表评论    

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