redis集群密码设置

1、密码设置(推荐)

方式一:修改所有Redis集群中的redis.conf文件加入:

masterauth passwd123
requirepass passwd123
说明:这种方式需要重新启动各节点

方式二:进入各个实例进行设置:

./redis-cli -c -p 7000
config set masterauth passwd123
config set requirepass passwd123
config rewrite
之后分别使用./redis-cli -c -p 7001,./redis-cli -c -p 7002……命令给各节点设置上密码。

注意:各个节点密码都必须一致,否则Redirected就会失败, 推荐这种方式,这种方式会把密码写入到redis.conf里面去,且不用重启。

用方式二修改密码,./redis-trib.rb check 10.104.111.174:6379执行时可能会报[ERR] Sorry, can’t connect to node 10.104.111.174:6379,因为6379的redis.conf没找到密码配置。

2、设置密码之后如果需要使用redis-trib.rb的各种命令

如:./redis-trib.rb check 127.0.0.1:7000,则会报错ERR] Sorry, can’t connect to node 127.0.0.1:7000
解决办法:vim /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis/client.rb,然后修改passord

复制代码
class Client
DEFAULTS = {
:url => lambda { ENV[“REDIS_URL”] },
:scheme => “redis”,
:host => “127.0.0.1”,
:port => 6379,
:path => nil,
:timeout => 5.0,
:password => “passwd123”,
:db => 0,
:driver => nil,
:id => nil,
:tcp_keepalive => 0,
:reconnect_attempts => 1,
:inherit_socket => false
}
复制代码
注意:client.rb路径可以通过find命令查找:find / -name 'client.rb’

带密码访问集群

./redis-cli -c -p 7000 -a passwd123

可以看到redis-trib.rb具有以下功能:

1、create:创建集群

2、check:检查集群

3、info:查看集群信息

4、fix:修复集群

5、reshard:在线迁移slot

6、rebalance:平衡集群节点slot数量

7、add-node:将新节点加入集群

8、del-node:从集群中删除节点

9、set-timeout:设置集群节点间心跳连接的超时时间

10、call:在集群全部节点上执行命令

11、import:将外部redis数据导入集群

1、create创建集群

create命令可选replicas参数,replicas表示需要有几个slave。最简单命令使用如下:

ruby redis-trib.rb create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003

有一个slave的创建命令如下:

ruby redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003

127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

2、check检查集群

检查集群状态的命令,没有其他参数,只需要选择一个集群中的一个节点即可。执行命令以及结果如下:

ruby redis-trib.rb check 127.0.0.1:7001

3、info查看集群信息

info命令用来查看集群的信息。info命令也是先执行load_cluster_info_from_node获取完整的集群信息。然后显示ClusterNode的info_string结果,示例如下:

ruby redis-trib.rb info 127.0.0.1:7001

4、fix修复集群

fix命令的流程跟check的流程很像,显示加载集群信息,然后在check_cluster方法内传入fix为true的变量,会在集群检查出现异常的时候执行修复流程。目前fix命令能修复两种异常,一种是集群有处于迁移中的slot的节点,一种是slot未完全分配的异常。

fix_open_slot方法是修复集群有处于迁移中的slot的节点异常。fix_slots_coverage方法能修复slot未完全分配的异常。

命令:# ruby redis-trib.rb fix 127.0.0.1:7001

5、reshard在线迁移slot

reshard命令可以在线把集群的一些slot从集群原来slot负责节点迁移到新的节点,利用reshard可以完成集群的在线横向扩容和缩容。

reshard的参数很多,下面来一一解释一番:

reshard host:port

            --from <arg>--to <arg>--slots <arg>--yes--timeout <arg>--pipeline <arg>

host:port:这个是必传参数,用来从一个节点获取整个集群信息,相当于获取集群信息的入口。

–from :需要从哪些源节点上迁移slot,可从多个源节点完成迁移,以逗号隔开,传递的是节点的node id,还可以直接传递–from all,这样源节点就是集群的所有节点,不传递该参数的话,则会在迁移过程中提示用户输入。

–to :slot需要迁移的目的节点的node id,目的节点只能填写一个,不传递该参数的话,则会在迁移过程中提示用户输入。

–slots :需要迁移的slot数量,不传递该参数的话,则会在迁移过程中提示用户输入。

–yes:设置该参数,可以在打印执行reshard计划的时候,提示用户输入yes确认后再执行reshard。

–timeout :设置migrate命令的超时时间。

–pipeline :定义cluster getkeysinslot命令一次取出的key数量,不传的话使用默认值为10。

命令:# ruby redis-trib.rb reshard --from all --to

80b661ecca260c89e3d8ea9b98f77edaeef43dcd --slots 11 127.0.0.1:7001

6、rebalance平衡集群节点slot数量

rebalance命令可以根据用户传入的参数平衡集群节点的slot数量,rebalance功能非常强大,可以传入的参数很多,以下是rebalance的参数列表和命令示例。

rebalance host:port

            --weight <arg>--auto-weights--threshold <arg>--use-empty-masters--timeout <arg>--simulate--pipeline <arg>

命令# ruby redis-trib.rb rebalance --threshold 1 --weight b31e3a2e=5 --weight 60b8e3a1=5 --use-empty-masters --simulate 127.0.0.1:7001

下面也先一一解释下每个参数的用法:

host:port:这个是必传参数,用来从一个节点获取整个集群信息,相当于获取集群信息的入口。

–weight :节点的权重,格式为node_id=weight,如果需要为多个节点分配权重的话,需要添加多个–weight 参数,即–weight b31e3a2e=5 --weight 60b8e3a1=5,node_id可为节点名称的前缀,只要保证前缀位数能唯一区分该节点即可。没有传递–weight的节点的权重默认为1。

–auto-weights:这个参数在rebalance流程中并未用到。

–threshold :只有节点需要迁移的slot阈值超过threshold,才会执行rebalance操作。

–use-empty-masters:rebalance是否考虑没有节点的master,默认没有分配slot节点的master是不参与rebalance的,设置–use-empty-masters可以让没有分配slot的节点参与rebalance。

–timeout :设置migrate命令的超时时间。

–simulate:设置该参数,可以模拟rebalance操作,提示用户会迁移哪些slots,而不会真正执行迁移操作。

–pipeline :与reshar的pipeline参数一样,定义cluster getkeysinslot命令一次取出的key数量,不传的话使用默认值为10。

7、add-node将新节点加入集群

add-node命令可以将新节点加入集群,节点可以为master,也可以为某个master节点的slave。

add-node new_host:new_port existing_host:existing_port

      --slave--master-id <arg>

add-node有两个可选参数:

–slave:设置该参数,则新节点以slave的角色加入集群

–master-id:这个参数需要设置了–slave才能生效,–master-id用来指定新节点的master节点。如果不设置该参数,则会随机为节点选择master节点。

可以看下add-node命令的执行示例:

命令#ruby redis-trib.rb add-node 127.0.0.1:7009 127.0.0.1:7001

8、del-node从集群中删除节点

del-node可以把某个节点从集群中删除。del-node只能删除没有分配slot的节点。删除命令传递两个参数:

host:port:从该节点获取集群信息。

node_id:需要删除的节点id。

del-node执行结果示例如下:

命令# ruby redis-trib.rb del-node 127.0.0.1:7001

d5f6d1d17426bd564a6e309f32d0f5b96962fe53

9、set-timeout设置集群节点间心跳连接的超时时间

set-timeout用来设置集群节点间心跳连接的超时时间,单位是毫秒,不得小于100毫秒,因为100毫秒对于心跳时间来说太短了。该命令修改是节点配置参数cluster-node-timeout,默认是15000毫秒。通过该命令,可以给每个节点设置超时时间,设置的方式使用config set命令动态设置,然后执行config rewrite命令将配置持久化保存到硬盘。以下是示例:

命令# ruby redis-trib.rb set-timeout 127.0.0.1:7001 30000

10、call在集群全部节点上执行命令

call命令可以用来在集群的全部节点执行相同的命令。call命令也是需要通过集群的一个节点地址,连上整个集群,然后在集群的每个节点执行该命令。

命令# ruby redis-trib.rb call 127.0.0.1:7001 get key

11、import将外部redis数据导入集群

import命令可以把外部的redis节点数据导入集群。导入的流程如下:

1、通过load_cluster_info_from_node方法转载集群信息,check_cluster方法检查集群是否健康。

2、连接外部redis节点,如果外部节点开启了cluster_enabled,则提示错误。

3、通过scan命令遍历外部节点,一次获取1000条数据。

4、遍历这些key,计算出key对应的slot。

5、执行migrate命令,源节点是外部节点,目的节点是集群slot对应的节点,如果设置了–copy参数,则传递copy参数,如果设置了–replace,则传递replace参数。

6、不停执行scan命令,直到遍历完全部的key。

7、至此完成整个迁移流程

这中间如果出现异常,程序就会停止。没使用–copy模式,则可以重新执行import命令,使用–copy的话,最好清空新的集群再导入一次。

import命令更适合离线的把外部redis数据导入,在线导入的话最好使用更专业的导入工具,以slave的方式连接redis节点去同步节点数据应该是更好的方式。

下面是一个例子

命令# ./redis-trib.rb import --from 10.0.10.1:6379 127.0.0.1:7001

上面的命令是把 10.0.10.1:6379上的数据导入到 127.0.0.1:7001这个节点所在的集群

这个更为直观详细

redis trib 常用命令相关推荐

  1. Redis初学:4(Redis的常用命令)

    Redis的常用命令 查看所有key keys * 如下图: 插入key set key value 如下图: 取出key对应的value值 get key 如下图: 查看某个key是否存在 exis ...

  2. Redis 中常用命令

    Redis 中常用命令 keys 返回满足给定 pattern 的所有 key. 127.0.0.1:6379> keys *1) "name2"2) "myzse ...

  3. Linux下安装redis以及常用命令

    https://blog.csdn.net/zgf19930504/article/details/51850594 安装: 1.获取redis资源 wget http://download.redi ...

  4. 05_NoSQL数据库之Redis数据库:Redis的常用命令,键值相关命令和服务器相关命令

     Redis常用命令 Redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以再Linux终端使用. 键值相关命令: Keys:返回满足给定pattern的所有key 用表达式*表 ...

  5. un7.28:redis客户端常用命令。

    安装完成Redis,我们就可以操作Redis,实现数据的CRUD(增删改查)了.这需要用到Redis客户端常用的一些命令,我给大家分享最常用的一些. 一.Redis命令行客户端 1.输入命令进入,命令 ...

  6. 【CentOS7安装Redis及常用命令】

    目录 一. 背景 二. 安装gcc依赖 三. 下载Redis 3.1 下载方式1:官网下载redis 3.2 下载方式2:wget获取redis 四. 安装 五. 启动 5.1 前台启动(不推荐) 5 ...

  7. 2、Redis的常用命令

    一.Redis的全局命令操作 1.查看所有键 keys * -- 也可以模糊搜索查询,但一般不推存 keys s* 2.查看键总数 dbsize 3.检查键是否存在 exists key 4.删除键, ...

  8. Redis HyperLogLog常用命令

    基数并不是存储元素,存储元素消耗内存空间比较大,而是给某一个有重复元素的数据集合(一般是很大的数据集合)评估需要的空间单元数,所以它没有办法进行存储,加上在工作中用得不多,我们要介绍一下 Redis ...

  9. Redis的常用命令,Redis常用操作命令

    1.Redis功能操作的命令 clear 清屏 服务器端 两次ctrl + c 退出 客户端 一次 Ctril + c 退出 / esc help 命令名称 2.string类型的命令 get key ...

  10. redis 自减命令_Redis 实战 —— 04. Redis 数据结构常用命令简介

    字符串 P39 Redis 的字符串是一个有字节组成的序列,可以存储以下 3 种类型的值:字节串(byte string).整数.浮点数. 在需要的时候, Redis 会将整数转换成浮点数.整数的取值 ...

最新文章

  1. java使用Calendar类获取常用简单工具类
  2. /etc/shadow 密码加密方法
  3. 计算机网络【五】广播通信+以太网
  4. 【算法】学习笔记(4):分治思想 归并排序
  5. 特征计算 - Jaccard 相似系数与 Python 代码实现
  6. 关于HttpUtility.UrlEncode,Server.UrlEncode
  7. bzoj2127: happiness
  8. Python使用最小二乘法求解回归直线案例一则
  9. Firefox 新版本发布,Cookie 可真不好吃
  10. python创意实用案例-python实用案例
  11. 解决Ubuntu系统找不到进程,但是GPU显存占满问题
  12. java web学习_JavaWeb学习路线
  13. QListView拖动排序
  14. 【Spark】Graphx用例(Java)
  15. python爬虫爬取网易云音乐下载_Python爬虫实践-网易云音乐!没有版权又如何!照样爬取!...
  16. 执行董事和CEO有什么区别
  17. 阿里云智能分析套件Quick BI详细介绍_智能分析套件Quick BI特性及优势
  18. 布袋除尘器过滤风速多少_布袋除尘器过滤风速一般多大?
  19. 第四章 网络层(TCP/IP称网际层)
  20. Python绘制彩色蟒蛇

热门文章

  1. win10 多任务 多视图 多窗口 处理快捷键
  2. [译] APT分析报告:07.拉撒路(Lazarus)使用的两款恶意软件分析
  3. Ubuntu 20.04 美化教程
  4. matlab 误差椭圆,第十章 误差椭圆.doc
  5. 集群容错机制:failover、failfast、failback、failsafe、forking
  6. 计算机状态代码意义,DELL电脑自检代码错误提示含义
  7. 利用dprintf为Cortex-M0/M0+添加类似SWO的调试输出口
  8. linux工作札记 - 查看发行版本命令
  9. c语言思维导图(学习笔记)
  10. 在线制作ico图标源码