Redis 由浅入深 (7) - 集群操作手册

在这里插入图片描述

目录

  • Redis运维查询命令
    • 登录redis集群(登录任意一台即可)
    • 查询redis集群信息(登录之后)
    • 通过客户端执行命令(redis-cli)
    • 查询正则“pattern”所有的key
  • redis 启动和创建的命令
  • Redis 常用命令
  • redis 手动命令设置过期key操作
    • 设置 key "mykey" 过期时间为 60 秒
    • 获取 key "mykey" 的剩余过期时间
    • 等待 60 秒后,再次获取剩余过期时间
  • redis 运维工具
    • query在线分析
    • 模拟oom
    • 模拟宕机
    • 模拟hang
    • 慢日志查询

Redis运维查询命令

登录redis集群(登录任意一台即可)

redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n [database, 0 - 16]

-h 跟host
-p 跟端口
-a 跟密码
-n 数据库 0 ~ 16 单机有效,集群默认都是0

查询redis集群信息(登录之后)

cluster nodes                        # 显示集群中的节点信息,包括节点 ID、IP 地址、端口号等。
cluster info                         # 显示有关集群的信息,如槽分配情况、节点数量等。
cluster meet <ip> <port>             # 将当前节点与另一个节点连接成集群。
cluster addslots <slot> [slot ...]   # 将槽分配给当前节点。
cluster delslots <slot> [slot ...]   # 将槽从当前节点中删除。
cluster rebalance                    # 重新分配槽,使集群中的槽在节点之间平衡分布。
cluster failover [force|takeover]    # 手动触发故障转移,将主节点切换到备份节点。
cluster forget <node_id>             # 从集群中移除指定节点。
cluster replicate <node_id>          # 将当前节点作为指定节点的备份节点。
cluster flushslots                   # 清空当前节点的所有槽。
cluster keyslot <key>                # 返回给定键被分配到的槽号。
cluster countkeysinslot <slot>       # 返回指定槽中包含的键的数量。
cluster getkeysinslot <slot> <count> # 返回指定槽中的键列表(不推荐在生产环境中使用,可能会导致性能问题)。

通过客户端执行命令(redis-cli)

redis-cli -h {host} -p {port} {command} 	        # 直接得到命令的返回结果。
$redis-cli -h 127.0.0.1-p 6379 get hello            # 输出world
redis-cli -r 3 ping 						        # 表示重复执行3次
redis-cli -r 3 -i 1 ping 					        # 每隔几秒(如果想用ms,如10ms则写0.01)执行一次命令,必须与-r一起使用。
redis-cli -r 10 -i 1 info|grep used_memory_human    # 每隔1秒输出内存的使用量,一共输出10次。
redis-cli -h ip -p port info server|grep process_id # 获取redis的进程号999

-r [times] 重复执行几次
-h [host]
-i 几秒执行一次
-x 代表从标准输入读取数据作为该命令的最后一个参数。echo "world" |redis-cli -x set hello
-c 连接集群结点时使用,此选项可防止moved和ask异常。
-a 如配置了密码,可用a选项。
--scan--pattern
用于扫描指定模式的键,相当于scan命令。
--slave
当当前客户端模拟成当前redis节点的从节点,可用来获取当前redis节点的更新操作。合理利用可用于记录当前连接redis节点的一些更新操作,这些更新可能是实开发业务时需要的数据。
--rdb
会请求redis实例生成并发送RDB持久化文件,保存在本地。可做定期备份。

--pipe
将命令封装成redis通信协议定义的数据格式,批量发送给redis执行。

--bigkeys
统计bigkey的分布,使用scan命令对redis的键进行采样,从中找到内存占用比较大的键,这些键可能是系统的瓶颈。

--eval
用于执行lua脚本

--latency
有三个选项,–latency、–latency-history、–latency-dist。它们可检测网络延迟,展现的形式不同。

--stat
可实时获取redis的重要统计信息。info命令虽然比较全,但这里可看到一些增加的数据,如requests(每秒请求数)

--raw--no-raw
–no-raw 要求返回原始格式。–raw 显示格式化的效果。

查询正则“pattern”所有的key

redis-cli -h hostname -p port -a password -n database --raw --scan --pattern "pattern"

redis 启动和创建的命令

要启动 Redis 集群,你需要先确保已经正确配置了 Redis 集群的配置文件,并且安装了 Redis 的相关软件。以下是启动 Redis 集群的一般步骤和命令:

  1. 准备配置文件: 确保已经创建了适当的 Redis 集群配置文件。在配置文件中,你需要指定集群的端口、节点 IP 地址、槽分配等信息。典型的配置文件名为 redis.conf。
  2. 启动节点: 对于每个 Redis 集群节点,你需要启动一个 Redis 服务器实例。在每个节点上,使用以下命令启动 Redis 服务器:
    redis-server /path/to/redis.conf

确保每个节点都在不同的端口上运行,并且配置文件中的端口和节点信息正确匹配。

  1. 创建集群: 一旦所有节点都已启动并运行,你可以使用 Redis 提供的 redis-cli 工具来创建集群。在其中一个节点上,执行以下命令:
redis-cli --cluster create <node1_ip>:<port> <node2_ip>:<port> ... --cluster-replicas <replicas>

在这个命令中,将 <node1_ip>:, <node2_ip>: 等替换为你实际的节点 IP 地址和端口号。 是指每个主节点的备份节点数量。

  1. 等待集群创建完成: 在执行上述命令后,Redis 会开始创建集群。这个过程可能需要一些时间,取决于集群的规模和配置。一旦集群创建完成,你就可以开始向 Redis 集群发送命令了。
    请注意,这里的步骤是一个简单的示例。在实际部署中,你可能需要更多的配置和管理操作,比如监控集群、调整节点配置等。确保在生产环境中小心谨慎地操作,以确保 Redis 集群的高可用性和稳定性。

Redis 常用命令

redis常用查询命令
以下是 Redis 常见数据结构的查询命令:

  1. 字符串(String)
    当处理 Redis 中的字符串数据类型时,以下是一些常用的操作命令:

    1. 设置字符串值
    • SET key value [EX seconds|PX milliseconds|NX|XX]: 设置指定 key 的值。可选的参数包括设置过期时间、设置仅在 key 不存在时设置值(NX)、设置仅在 key 存在时设置值(XX)。
    1. 获取字符串值
    • GET key: 获取指定 key 的值。
    1. 设置并获取旧值
    • GETSET key value: 设置指定 key 的值,并返回旧值。
    1. 获取字符串长度
    • STRLEN key: 获取指定 key 的字符串长度。
    1. 追加字符串
    • APPEND key value: 在指定 key 的值后追加字符串值。
    1. 设置子字符串
    • SETRANGE key offset value: 用给定值覆盖指定 key 所储存的字符串值的子字符串。
    1. 获取子字符串
    • GETRANGE key start end: 获取指定 key 的字符串值的子字符串。
    1. 自增/自减
    • INCR key: 将指定 key 的值增加 1。
    • DECR key: 将指定 key 的值减少 1。
    • INCRBY key increment: 将指定 key 的值增加指定的增量。
    • DECRBY key decrement: 将指定 key 的值减少指定的减量。
    1. 浮点数增加
    • INCRBYFLOAT key increment: 将指定 key 存储的数值增加指定的浮点数增量。
    1. 比较并设置
    • SETNX key value: 仅在指定 key 不存在时,设置 key 的值。
    1. 多个键操作
    • MSET key value [key value ...]: 设置多个 key-value 对。
    • MGET key [key ...]: 获取多个 key 的值。
      这些命令可以用于操作 Redis 中的字符串数据类型。在实际应用中,根据需要选择适当的命令来处理字符串数据。
  2. 哈希表(Hash)
    Hash 是 Redis 中的一种数据结构,它类似于其他编程语言中的哈希表或字典,可以用来存储键值对的集合。以下是对 Hash 常见操作的详细说明:

    1. 设置字段值
    • HSET key field value: 在指定的哈希 key 中设置字段的值。
    • HMSET key field1 value1 [field2 value2 ...]: 在指定的哈希 key 中设置多个字段的值。
    1. 获取字段值
    • HGET key field: 获取指定哈希 key 中指定字段的值。
    • HMGET key field1 [field2 ...]: 获取指定哈希 key 中一个或多个字段的值。
    1. 删除字段
    • HDEL key field [field ...]: 删除指定哈希 key 中的一个或多个字段。
    1. 检查字段是否存在
    • HEXISTS key field: 检查指定哈希 key 中是否存在指定字段。
    1. 获取所有字段名
    • HKEYS key: 获取指定哈希 key 中所有字段的名字。
    1. 获取所有字段值
    • HVALS key: 获取指定哈希 key 中所有字段的值。
    1. 获取字段数量
    • HLEN key: 获取指定哈希 key 中字段的数量。
    1. 获取所有字段和值
    • HGETALL key: 获取指定哈希 key 中所有字段和值。
    1. 自增/自减
    • HINCRBY key field increment: 将指定哈希 key 中指定字段的值增加指定增量。如果字段不存在,则创建字段并将其设置为增量值。
      这些命令允许你方便地操作 Redis 中的 Hash 数据结构,对于存储和检索键值对集合是非常有用的。在使用 Hash 数据结构时,请根据具体情况选择适当的命令,以实现所需的功能。
  3. 列表(List)
    Redis 中的 List 是一个双向链表,它支持在列表的两端进行插入和删除操作,常用于实现队列、栈等数据结构。以下是 List 数据接口常用命令的详细说明:

    1. 从左端插入元素
    • LPUSH key element [element ...]: 将一个或多个值插入到列表头部。
    1. 从右端插入元素
    • RPUSH key element [element ...]: 将一个或多个值插入到列表尾部。
    1. 从左端移除元素
    • LPOP key: 移除并返回列表的第一个元素。
    1. 从右端移除元素
    • RPOP key: 移除并返回列表的最后一个元素。
    1. 获取列表长度
    • LLEN key: 获取列表的长度。
    1. 获取指定范围的元素
      - LRANGE key start stop: 获取列表中指定范围内的元素,范围从 start 到 stop。
    2. 设置指定位置的元素值
    • LSET key index value: 设置列表中指定位置的元素值。
    1. 获取指定位置的元素值
    • LINDEX key index: 获取列表中指定位置的元素值。
    1. 移除列表中指定值的元素
    • LREM key count value: 从列表中删除指定数量的与给定值相等的元素。
    1. 修剪列表
    • LTRIM key start stop: 对列表进行修剪,只保留指定范围内的元素。
    1. 阻塞式弹出元素
    • BLPOP key1 [key2 ...] timeout: 阻塞式弹出列表的第一个元素,如果列表为空,则等待直到有元素被加入或达到超时时间。
    • BRPOP key1 [key2 ...] timeout: 类似于 BLPOP,但从列表尾部弹出元素。
    1. 阻塞式弹出元素并将其添加到另一个列表
    • BRPOPLPUSH source destination timeout: 从列表 source 的尾部弹出一个元素并将其添加到列表 destination 的头部,如果 source 为空,则等待直到有元素被加入或达到超时时间。
      这些命令可以方便地对 Redis 中的 List 进行操作,实现队列、栈等数据结构的功能。在使用 List 数据结构时,请根据具体需求选择合适的命令。
  4. 集合(Set)

    • SMEMBERS key: 获取集合中的所有成员。
    • SADD key member [member …]: 向集合添加一个或多个成员。
  5. 有序集合(Sorted Set)

    • ZRANGE key start stop [WITHSCORES]: 根据索引范围获取有序集合中的成员。
    • ZADD key score member [score member …]: 向有序集合添加一个或多个成员,或更新已存在成员的分数。
  6. 位图(Bitmap)

    • GETBIT key offset: 获取位图指定偏移量上的位值。
    • SETBIT key offset value: 设置位图指定偏移量上的位值。
      7.地理空间(Geospatial)
    • GEOPOS key member [member …]: 获取指定地理空间 key 中一个或多个成员的地理位置。
  7. HyperLogLog

    • PFADD key element [element …]: 向 HyperLogLog 添加指定元素。
    • PFCOUNT key [key …]: 获取 HyperLogLog 的基数估算值。
      这些是 Redis 常见数据结构的查询命令,每种数据结构都有相应的查询方法来获取或操作数据。在使用这些命令时,请注意适当处理数据和异常情况,并根据具体情况选择适合的命令。

redis 手动命令设置过期key操作

在 Redis 中,可以通过设置过期时间来使 key 在一段时间后自动过期。一旦 key 过期,Redis 会自动删除它。以下是设置过期时间和处理过期 key 的一些命令:

  1. 设置过期时间:
  • EXPIRE key seconds: 设置 key 的过期时间,单位为秒。
  • PEXPIRE key milliseconds: 设置 key 的过期时间,单位为毫秒。
  • EXPIREAT key timestamp: 设置 key 的过期时间戳,时间戳是一个 UNIX 时间戳,指定了 key 的过期时间点。
  1. 获取剩余时间:
  • TTL key: 获取 key 的剩余过期时间,单位为秒。如果 key 不存在或没有设置过期时间,返回 -1;如果 key 已过期,返回 -2。
  1. 处理过期 key:
  • Redis 在后台自动处理过期 key,无需手动操作。
  • 可以使用 DEL 命令手动删除已经过期的 key。
  • 也可以使用 SCAN 命令遍历所有的 key,并通过检查剩余过期时间来判断是否过期,然后删除已经过期的 key。
    示例:

设置 key “mykey” 过期时间为 60 秒

127.0.0.1:6379> SET mykey "Hello"
OK
127.0.0.1:6379> EXPIRE mykey 60
(integer) 1

获取 key “mykey” 的剩余过期时间

127.0.0.1:6379> TTL mykey
(integer) 59

等待 60 秒后,再次获取剩余过期时间

127.0.0.1:6379> TTL mykey
(integer) -2

通过设置过期时间,Redis 能够自动管理 key 的生命周期,使得开发者无需手动处理 key 的过期和删除操作。

redis 运维工具

query在线分析

redis-cli MONITOR | head -n 5000 | ./redis-faina.py   

监控正在请求执行的命令
在cli下执行monitor,生产环境慎用。

模拟oom

redis-cli debug oom

模拟宕机

redis-cli debug segfault

模拟hang

redis-cli -p 6379 DEBUG sleep 30

慢日志查询

要在 Redis 集群中查询慢日志,你可以使用以下方法:
1.通过命令行查询:在任何一个 Redis 节点上,你可以使用 redis-cli 工具来查询慢日志。以下是基本的命令:

redis-cli -c -h <node_ip> -p <port> slowlog get <n>

其中, 是你想要查询的慢日志条目数量。你也可以使用其他参数和选项来调整查询结果,例如使用 slowlog len 命令查看慢日志的长度。
2.通过编程接口查询:如果你正在使用 Redis 的编程接口(如 Python 的 redis-py、Node.js 的 ioredis 等),你可以使用相应的客户端库来查询慢日志。这通常通过执行 SLOWLOG GET 命令来完成,具体实现方式会因语言和库而异。
3.使用监控工具:一些监控工具可以帮助你更方便地查询和分析 Redis 集群的慢日志,例如 RedisInsight、RedisStat 等。在执行慢日志查询时,你需要注意以下几点:

  • 在生产环境中,建议定期查询慢日志,并根据查询结果进行优化。
  • 对于生产环境,避免频繁查询慢日志,以免影响 Redis 服务器性能。
  • 如果发现某个节点的慢查询频率较高,需要仔细分析具体的慢查询原因,并针对性地优化相关代码或查询。

参考文献
http://doc.redisfans.com/index.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】脑部MRI图像分割

案例4&#xff1a;脑部MRI图像分割 相关知识点&#xff1a;语义分割、医学图像处理&#xff08;skimage, medpy&#xff09;、可视化&#xff08;matplotlib&#xff09; 1 任务目标 1.1 任务简介 本次案例将使用深度学习技术来完成脑部MRI(磁共振)图像分割任务&#xff0c…

ETH网络权益证明(PoS)

权益证明 - POS 权益证明是一种证明验证者已经将有价值物品质押到网络上的方法。如果验证者有失信行为&#xff0c;这些物品可能会被销毁。 在以太坊的权益证明机制下&#xff0c;验证者明确地通过以太币将资产质押到以太坊上的智能合约中。 之后&#xff0c;验证者负责检查在网…

python概率分析:为什么葫芦娃救爷爷是一个一个地救成功率最高?

关键词&#xff1a; Python 、葫芦娃 、 概率计算 、 数学 、 建模 前言 过完年了返工后想起了小孩子们爱看的葫芦娃救爷爷的动画片&#xff0c;葫芦娃为什么是一个一个前去救爷爷&#xff0c;为什么不等着七个一起去救爷爷。带着这个疑问&#xff0c;我决定今天用数学的角度…

Linux开发工具使用

一、Linux软件包管理器 yum 软件包和软件包管理器, 就好比 "App" 和 "应用商店" &#xff0c;我们现在要安装的yum就是相当于在我们的Linux终端安装一个"应用商店"。 但使用yum时&#xff0c;我们一定要保证主机(虚拟机)网络畅通!这点也非常好理…

分类问题经典算法 | 二分类问题 | Logistic回归:公式推导

目录 一. Logistic回归的思想1. 分类任务思想2. Logistic回归思想 二. Logistic回归算法&#xff1a;线性可分推导 一. Logistic回归的思想 1. 分类任务思想 分类问题通常可以分为二分类&#xff0c;多分类任务&#xff1b;而对于不同的分类任务&#xff0c;训练的主要目标是…

RabbitMQ(三):AMQP协议

目录 1 AMQP协议1.1 AMQP协议介绍1、AMQP是什么2、消息代理中间件的职责 1.2 AMQP 0-9-1模型1、AMQP的工作过程2、交换器和交换器类型3、队列队列属性队列名称队列持久化 1.3 几个概念1、绑定2、消费者3、消息确认4、预取消息5、消息属性和有效载荷&#xff08;消息主体&#x…

HTML5:七天学会基础动画网页7

CSS3高级特效 2D转换方法 移动:translate() 旋转:rotate() 缩放:scale() 倾斜:skew() 属性:transform 作用:对元素进行移动,旋转,缩放,倾斜。 2D移动 设定元素从当前位置移动到给定位置(x,y) 方法 说明 translate(x,y) 2D转换 沿X轴和Y轴移…

概率基础——极大似然估计

概率基础——极大似然估计 引言 极大似然估计&#xff08;Maximum Likelihood Estimation&#xff0c;简称MLE&#xff09;是统计学中最常用的参数估计方法之一&#xff0c;它通过最大化样本的似然函数来估计参数值&#xff0c;以使得样本出现的概率最大化。极大似然估计在各…

学习JAVA的第十三天(基础)

目录 API之Arrays 将数组变成字符串 二分查找法查找元素 拷贝数组 填充数组 排序数组 Lambda表达式 集合的进阶 单列集合 体系结构 Collection API之Arrays 操作数组的工具类 将数组变成字符串 //将数组变成字符串char[] arr {a,b,c,d,e};System.out.println(Arra…

Python常用验证码标注和识别(需求分析和实现思路)

目录 一、需求分析 图像验证码识别&#xff1a; 文本验证码识别&#xff1a; 二、实现思路 三、案例与代码 四、总结与展望 在当今的数字时代&#xff0c;验证码&#xff08;CAPTCHA&#xff09;作为一种安全机制&#xff0c;广泛应用于网站和应用程序中&#xff0c;以防…

Method Not Allowed (GET): /user/logout/

在使用 DJango 框架使用框架默认的【登出】视图时&#xff0c;发现报错如下&#xff1a; Method Not Allowed (GET): /user/logout/ Method Not Allowed: /user/logout/ 退出部分的代码原先如下&#xff08;登出部分见第6行&#xff09;&#xff1a; <p><a href"…

MySQL 8.0.35 企业版安装和启用TDE插件keyring_encrypted_file

本文主要记录MySQL企业版TDE插件keyring_encrypted_file的安装和使用。 TDE说明 TDE( Transparent Data Encryption,透明数据加密) 指的是无需修改应用就可以实现数据的加解密&#xff0c;在数据写磁盘的时候加密&#xff0c;读的时候自动解密。加密后其他人即使能够访问数据库…

Unity 摄像机的深度切换与摄像机画面投影

摄像机可选&#xff1a;透视、正交 正交类似投影&#xff0c;1比1 透视类似人眼&#xff0c;近大远小 摄像机投影 在项目中新建&#xff1a;渲染器纹理 将新建纹理拖动到相机的目标纹理中 新建一个平面&#xff0c;将新建材质组件放到平面中即可。 相机深度切换 使用代…

93. 通用防重幂等设计

文章目录 一、防重与幂等的区别二、幂等性的应用场景三、幂等性与防重关系四、处理流程 一、防重与幂等的区别 防重与幂等是在 Web 应用程序和分布式系统中重要而又非常常见的问题。 防重 防重是指在多次提交同样的请求过程中&#xff0c;系统会检测和消除重复的数据&#xf…

HTTP有什么缺陷,HTTPS是怎么解决的

缺陷 HTTP是明文的&#xff0c;谁都能看得懂&#xff0c;HTTPS是加了TLS/SSL加密的&#xff0c;这样就不容易被拦截和攻击了。 SSL是TLS的前身&#xff0c;他俩都是加密安全协议。前者大部分浏览器都不支持了&#xff0c;后者现在用的多。 对称加密 通信双方握有加密解密算法…

python自学3

第一节第六章 数据的列表 列表也是支持嵌套的 列表的下标索引 反向也可以 嵌套也可以 列表的常用操作 什么是列表的方法 学习到的第一个方法&#xff0c;index&#xff0c;查询元素在列表中的下标索引值 index查询方法 修改表功能的方法 插入方法 追加元素 单个元素追加 多…

YOLO v9训练自己数据集

原以为RT-DETR可以真的干翻YOLO家族&#xff0c;结果&#xff0c;&#xff01;&#xff01;&#xff01;&#xff01; 究竟能否让卷积神经网络重获新生&#xff1f; 1.数据准备 代码地址&#xff1a;https://github.com/WongKinYiu/yolov9 不能科学上网的评论区留言 数据集…

教育知识与能力保分卷一(中学)

2.在教育学的发展过程中&#xff0c;代表马克思主义的教育学著作是&#xff08;A &#xff09;。 A.凯洛夫的《教育学》 B.赞可夫的《教学与发展》 C.杜威的《民主主义与教育》 D.昆体良的《论演说家的教育》 8.小贺在一次期…

电脑不小心格式化了,怎么恢复?

在这个数字化时代&#xff0c;电脑已经成为我们日常生活和工作中不可或缺的工具。然而&#xff0c;有时我们可能会不小心格式化电脑硬盘&#xff0c;导致重要数据的丢失。那么&#xff0c;电脑不小心格式化了&#xff0c;怎么恢复&#xff1f; 别着急&#xff0c;在本篇攻略中&…

掌握PDF全面指南:Python开发者的高效编程技巧

掌握PDF全面指南&#xff1a;Python开发者的高效编程技巧 简介PDF基础知识PDF的结构常见用途PDF在开发中的挑战 PDF处理库介绍PyPDF2ReportLabPDFMiner辅助库 读取和分析PDF文件使用PyPDF2读取PDF文件提取PDF中的文本和元数据分析PDF结构和内容 编辑和修改PDF文件合并多个PDF文…