编辑
2023-05-18
Linux
00

CPU

按进程占用量降序查看

  1. top 进入交互模式;
  2. 输入P, 运行进程根据CPU使用百分比大小进行排序;
  3. PS: %CPU指标是指进程占用一个CPU物理核心的比例, 当物理机为多核时, 指标可以超过100%;

image.png

根据进程ID查看资源占用状态

shell
top -p PID

image.png

查看每个物理核心使用率

  1. top 进入交互模式;
  2. 按下数字 1;

image.png

内存

按进程占用量降序查看

  1. top 进入交互模式;
  2. 输入M, 进程根据驻留内存大小进行排序;

image.png

编辑
2023-05-03
Tools
00
编辑
2023-05-03
Redis
00

keys

客户端可查询出所有存在的键,时间复杂度为 O(n)

可用scan替代该命令

flushdb

删除 Redis 中当前所在数据库中的所有记录,并且此命令从不会执行失败。

flushall

删除 Redis 中所有数据库中的所有记录,不止是当前所在数据库,并且此命令从不会执行失败。

config set

客户端可修改 Redis 配置。

禁用或重命名

在配置文件redis.conf中找到SECURITY区域,添加如下命令

禁用命令

rename-command KEYS "" rename-command FLUSHALL "" rename-command FLUSHDB "" rename-command CONFIG "" rename-command EVAL ""

重命名命令

rename-command KEYS "SCAN 0" rename-command FLUSHALL "BB" rename-command FLUSHDB "CC" rename-command CONFIG "DD" rename-command EVAL "EE"
编辑
2023-05-03
Redis
00

背景描述

生产环境是集群Redis,尝试对一个key进行rename,提示如下: CROSSSLOT Keys in request don‘t hash to the same slot. 原因是:rename 需要把oldkey 名字重置为 newkey,但oldkey 和 newkey不在同一个hash slot

Hash Tags

在某些集群方案中,涉及多个key的操作会被限制在一个slot中,如mget/mset,rename操作. Redis 集群的键空间被分割为 16384 个槽(slot), 集群的最大节点数量也是 16384 个。 每个Key都会经过CRC16计算散列到固定的槽位中,对于多个键,仅当它们都共享相同的连接插槽时才执行

HashTag机制可以影响key被分配到的slot,从而可以使用那些被限制在slot中操作。

HashTag即是用{}包裹key的一个子串,如{user:}1, {user:}2。

在设置了HashTag的情况下,集群会根据HashTag决定key分配到的slot, 两个key拥有相同的HashTag:{user:}, 它们会被分配到同一个slot,允许我们使用MGET命令。

通常情况下,HashTag不支持嵌套,即将第一个{和第一个}中间的内容作为HashTag。若花括号中不包含任何内容则会对整个key进行散列,如{}user:。

HashTag可能会使过多的key分配到同一个slot中,造成数据倾斜影响系统的吞吐量,务必谨慎使用。

例子

有一组key,前缀为 precise_, 后缀为 1~100的数字. Redis中已经导入了 precise_1 ~ precise_100 100个key,现需要重新设置这个100key的值,可按如下步骤:

  1. 正式key格式改为 {precise_num},添加hash tag包含;
  2. 新的key格式为 {precise_num}_tmp;
  3. rename {precise_num}_tmp {precise_num};

参考文章:

https://blog.csdn.net/qq_39815207/article/details/107078476

https://redis.io/docs/reference/cluster-spec/#hash-tags

编辑
2023-05-03
Redis
00