rediscluster配置详解_redis集群配置

rediscluster配置详解_redis集群配置[TOC] RedisCluster 集群快速入门备忘 PS : 该教程基于Redis5.0+ Redis cluster集群需要注意: 可以线性扩张到1000个节点 节点使用P2P而非Proxy方…

RedisCluster 集群快速入门备忘

RedisCluster 集群快速入门备忘

PS : 该教程基于Redis5.0+

Redis cluster集群需要注意:

  1. 可以线性扩张到1000个节点
  2. 节点使用P2P而非Proxy方式交互,牺牲了数据一致性.
  3. 客户端容忍一定程度的数据丢失
  4. 数据按照Slot存储分布在多个Redis实例上
  5. 集群节点挂掉会自动故障转移

需要知道:

所有的主节点对应到[0-16383]整数区间–槽道slot;各自的主节点维护一批槽道号(0-5000,5001-10000,10001-16383);

所以如果一条数据保存在0-5000的槽中,而此槽保存在节点1中,那么如果用户一直请求这条数据或者说在打这一条数据,此时的性能还不如单机Redis性能.

Redis集群的整体性能和单机这一块需要分清楚才能更好的在项目利用.

集群常用命令与配置

常用命令

# 下载Redis
$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz

# 查看进程
$ ps -ef | grep redis 

# 连接到指定的节点(一定要加入-c,否则进入的就不是集群环境)
$ redis-cli -h 127.0.0.1 -p 7000 -c

# 创建集群(需要Redis位于启动状态)
# create : 创建集群
# --cluster-replicas 1 一台为副本机(备份机)如果数据冗余是1的话,至少要3个Master和3个Slave,共6台
$ redis-cli --cluster create 127.0.0.1:7000 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 --cluster-replicas 1

# 追加节点
$ redis-cli --cluster add-node 127.0.0.1:7000 127.0.0.1:7001

# 查看集群状态(输入任意节点,即可会带出所有的节点状态)
$ redis-cli  --cluster check 127.0.0.1:7000

# 查看节点
$ redis-cli cluster nodes -h 127.0.0.1 -p 7000 -c

# 删除节点
$ redis-cli --cluster del-node 127.0.0.1:7000

# 关闭节点(关闭redis集群不能直接kill掉进程,否则无法保存数据,必须这样正常关闭)
$ redis-cli -h 127.0.0.1 -p 7000 shutdown

# 如果你不想混了可以这样关闭进程
ps -ef | grep redis | awk "{print $2}" | xargs kill

代码100分

集群命令

代码100分Redis集群的命令
以下命令不需要redis-cli --cluster 而是redis-cli cluster即可

集群
  cluster info :打印集群的信息
  cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息。


节点
  cluster meet <ip> <port> :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
  cluster forget <node_id> :从集群中移除 node_id 指定的节点(保证空槽道)。
  cluster replicate <node_id> :将当前节点设置为 node_id 指定的节点的从节点。
  cluster saveconfig :将节点的配置文件保存到硬盘里面。


槽(slot)
  cluster addslots <slot> [slot ...] :将一个或多个槽( slot)指派( assign)给当前节点。
  cluster delslots <slot> [slot ...] :移除一个或多个槽对当前节点的指派。
  cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
  cluster setslot <slot> node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给
  另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
  cluster setslot <slot> migrating <node_id> :将本节点的槽 slot 迁移到 node_id 指定的节点中。
  cluster setslot <slot> importing <node_id> :从 node_id 指定的节点中导入槽 slot 到本节点。
  cluster setslot <slot> stable :取消对槽 slot 的导入( import)或者迁移( migrate)。


键
  cluster keyslot <key> :计算键 key 应该被放置在哪个槽上。
  cluster countkeysinslot <slot> :返回槽 slot 目前包含的键值对数量。
  cluster getkeysinslot <slot> <count> :返回 count 个 slot 槽中的键 


集群配置

# 绑定登录的IP地址,别忘了注销咯,或者改成当前服务器的IP地址
# 注销后外部无法访问,本地测试就所谓了
bind 127.0.0.1
# 开启安全模式,一旦为yes上面就必须bind ip地址, 如果注释了上面的bind, 这里也要注释掉
# 否则平时无法用redis-cli -h 来远程访问该节点
protected-mode yes
# 监听的端口号
port 7000
# 以守护进程运行Redis
daemonize yes
# redis日志保存位置
logfile "./redis-7000.log"
# 设置库的数量,集群下只支持一个库
databases 16
# 开启AOF日志
appendonly yes

# 开启cluster集群
cluster-enabled yes
# 集群节点日志文件名
cluster-config-file nodes-7000.conf
# 集群节点同步超时时间 5s
cluster-node-timeout 5000
# 集群所有节点状态为ok才提供服务。建议设置为no,可以在slot没有全部分配的时候提供服务。
# 默认是yes,只要有结点宕机导致16384个槽没全被覆盖,整个集群就全部停止服务,所以一定要改为no
# 为no时,表示当负责一个插槽的主库下线且没有相应的从库进行故障恢复时,集群仍然可用,下面论证该情况。
# 为yes时,表示当负责一个插槽的主库下线且没有相应的从库进行故障恢复时,集群不可用,下面论证该情况。
cluster-require-full-coverage no
# 在进行故障转移的时候全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了导致数据过于陈旧,不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长。判断方法是:比较slave断开连接的时间和(node-timeout * slave-validity-factor)+ repl-ping-slave-period如果节点超时时间为三十秒, 并且slave-validity-factor为10,假设默认的repl-ping-slave-period是10秒,即如果超过310秒slave将不会尝试进行故障转移
cluster-slave-validity-factor 10  
# master的slave数量大于该值,slave才能迁移到其他孤立master上,如这个参数被设为2,那么只有当一个主节点拥有2个可工作的从节点时,它的一个从节点才会尝试迁移。
cluster-migration-barrier 1

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9950.html

(0)
上一篇 2023-01-28
下一篇 2023-01-28

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注