Redis Cluster 手动部署(小白的“升级打怪”成长之路)

无人驾驶汽车系统入门(三十二)——FEC算法:点云快速欧几里得聚类实战解析 本文深入解析了FEC算法在无人驾驶点云聚类中的高效应用,通过逐点处理策略和体素栅格预分割技术,实现了比传统欧几里得聚类快百倍的速度。文章详细介绍了算法原理、Python实现及参数调优指南,并对比了FEC与传统算法的性能差异,为无人驾驶系统开发提供了实用解决方案。 阅读详情

目录

一、环境规划

二、基础环境

1、创建配置目录

2、生成配置文件

3、修改监听端口

4、修改数据目录

5、修改日志目录

6、修改PID文件目录

7、修改保护模式

8、修改进程运行模式

9、修改监听地址

10、生成集群配置

11、启动服务

三、构建集群

1、将其他节点加入集群

2、分配slot

3、建立主从关系

4、集群操作命令

四、故障恢复

1、模式故障

2、故障恢复

3、cluster failover命令

yum安装redis实现Cluster集群案例

1、更改配置文件

2、将其他节点加入集群

3、分配slot

4、建立主从关系

5、查看集群部署情况

6、验证不同节点管理不同槽位

7、模拟主节点出故障,从节点接替管理槽位

8、手动触发主从切换

一、环境规划

主机名IP地址端口描述
redis-master192.168.166.96379redis-master01
6381redis-master02
6383redis-master03
redis-slave192.168.166.96380redis-slave01
6382redis-slave02
6384redis-slave03

二、基础环境

1、创建配置目录

mkdir /etc/redis
​
mv /etc/redis.conf  /etc/redis/6379.conf
​
cd /etc/redis
cat 6379.com
bind 192.168.166.9
protected-mode no
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised systemd
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis/redis.log
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir /var/lib/redis
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
​

2、生成配置文件

[root@localhost redis]# for i in {6380..6384};do cp ./6379.conf ${i}.conf ;done
[root@localhost redis]# ls
6379.conf  6380.conf  6381.conf  6382.conf  6383.conf  6384.conf

3、修改监听端口

[root@localhost redis]# for i in {6380..6384};do sed -i "s/port 6379/port ${i}/" ./${i}.conf;done
[root@localhost redis]# for i in {6380..6384};do grep "^port" ./${i}.conf;done
port 6380
port 6381
port 6382
port 6383
port 6384

4、修改数据目录

[root@localhost redis]# for i in {6379..6384};do sed -i "s#dir /var/lib/redis#dir /var/lib/redis/${i}#" ./${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do grep "^di" ./${i}.conf;done
dir /var/lib/redis/6379
dir /var/lib/redis/6380
dir /var/lib/redis/6381
dir /var/lib/redis/6382
dir /var/lib/redis/6383
dir /var/lib/redis/6384

5、修改日志目录

[root@localhost redis]# for i in {6379..6384};do sed -i "s#logfile /var/log/redis/redis.log#logfile /var/log/redis/${i}.log#" ./${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do grep "^logfile" ./${i}.conf;done
logfile /var/log/redis/6379.log
logfile /var/log/redis/6380.log
logfile /var/log/redis/6381.log
logfile /var/log/redis/6382.log
logfile /var/log/redis/6383.log
logfile /var/log/redis/6384.log

6、修改PID文件目录

[root@localhost redis]# for i in {6379..6384};do sed -i "s#pidfile /var/run/redis_6379.pid#pidfile /var/run/redis/${i}.pid#" ${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do grep "^pidfile" ${i}.conf;done
pidfile /var/run/redis/6379.pid
pidfile /var/run/redis/6380.pid
pidfile /var/run/redis/6381.pid
pidfile /var/run/redis/6382.pid
pidfile /var/run/redis/6383.pid
pidfile /var/run/redis/6384.pid

7、修改保护模式

[root@localhost redis]# for i in {6379..6384};do sed -i "s#protected-mode yes#protected-mode no#" ${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do grep "^protected-mode" ${i}.conf;done
protected-mode no
protected-mode no
protected-mode no
protected-mode no
protected-mode no
protected-mode no

8、修改进程运行模式

[root@localhost redis]# for i in {6379..6384};do sed -i "s#daemonize no#daemonize yes#" ${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do grep "^daemonize" ${i}.conf;done
daemonize yes
daemonize yes
daemonize yes
daemonize yes
daemonize yes
daemonize yes

9、修改监听地址

[root@localhost redis]# for i in {6379..6384};do sed -i "s#bind 127.0.0.1#bind 192.168.166.9#" ${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do grep "^bind" ${i}.conf;done
bind 192.168.166.9
bind 192.168.166.9
bind 192.168.166.9
bind 192.168.166.9
bind 192.168.166.9
bind 192.168.166.9

10、生成集群配置

[root@localhost ~]# cd /var/lib/redis/
[root@localhost redis]# mkdir {6379..6384}
[root@localhost redis]# ls
6379  6380  6381  6382  6383  6384
​
[root@localhost ~]# cd /var/run/
[root@localhost run]# mkdir redis
[root@localhost run]# cd /etc/redis
[root@localhost redis]# for i in {6379..6384};do echo -e "cluster-enabled yes\ncluster-config-file nodes-${i}.conf\ncluster-node-timeout 15000" >> ${i}.conf;done
[root@localhost redis]# for i in {6379..6384};do tail -3 ${i}.conf;done
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
cluster-enabled yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 15000
cluster-enabled yes
cluster-config-file nodes-6381.conf
cluster-node-timeout 15000
cluster-enabled yes
cluster-config-file nodes-6382.conf
cluster-node-timeout 15000
cluster-enabled yes
cluster-config-file nodes-6383.conf
cluster-node-timeout 15000
cluster-enabled yes
cluster-config-file nodes-6384.conf
cluster-node-timeout 15000
​

11、启动服务

[root@localhost redis]# for((i=6379;i<=6384;i++));do redis-server /etc/redis/${i}.conf;done
[root@localhost redis]# netstat -anptu | grep redis
tcp        0      0 192.168.166.9:16380   0.0.0.0:*               LISTEN      3154/redis-server 1 
tcp        0      0 192.168.166.9:16381   0.0.0.0:*               LISTEN      3156/redis-server 1 
tcp        0      0 192.168.166.9:16382   0.0.0.0:*               LISTEN      3160/redis-server 1 
tcp        0      0 192.168.166.9:16383   0.0.0.0:*               LISTEN      3166/redis-server 1 
tcp        0      0 192.168.166.9:16384   0.0.0.0:*               LISTEN      3170/redis-server 1 
tcp        0      0 192.168.166.9:6379    0.0.0.0:*               LISTEN      3150/redis-server 1 
tcp        0      0 192.168.166.9:6380    0.0.0.0:*               LISTEN      3154/redis-server 1 
tcp        0      0 192.168.166.9:6381    0.0.0.0:*               LISTEN      3156/redis-server 1 
tcp        0      0 192.168.166.9:6382    0.0.0.0:*               LISTEN      3160/redis-server 1 
tcp        0      0 192.168.166.9:6383    0.0.0.0:*               LISTEN      3166/redis-server 1 
tcp        0      0 192.168.166.9:6384    0.0.0.0:*               LISTEN      3170/redis-server 1 
tcp        0      0 192.168.166.9:16379   0.0.0.0:*               LISTEN      3150/redis-server 1 

三、构建集群

以下操作需要登录某个节点的redis数据库

1、将其他节点加入集群

[root@localhost redis]# redis-cli  -h 192.168.166.9
​
192.168.166.9:6379> CLUSTER MEET 192.168.166.9 6380
OK
192.168.166.9:6379> CLUSTER MEET 192.168.166.9 6381
OK
192.168.166.9:6379> CLUSTER MEET 192.168.166.9 6382
OK
192.168.166.9:6379> CLUSTER MEET 192.168.166.9 6383
OK
192.168.166.9:6379> CLUSTER MEET 192.168.166.9 6384
OK
​
########或者终端执行如下指令#####
for i in {6380..6384};do redis-cli -h 192.168.166.9 -p 6379 cluster meet 192.168.166.9 $i;done

2、分配slot

也是在规划谁是master节点

[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6379 cluster addslots {0..5461}
OK
[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6381 cluster addslots {5462..10922}
OK
[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6383 cluster addslots {10923..16383}
OK

3、建立主从关系

查看所有群集节点

[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6379 cluster nodes
69ed2c9d99ac83e52851d67e2597927142f47ebf 192.168.166.9:6381 master - 0 1709263044558 5 connected 5462-10922
c3f6d16785ab3de1b88f8ddb8e5bea3e7c6de5d4 192.168.166.9:6382 master - 0 1709263043555 0 connected
a8b96d687e681dd4c606e6959468b2bc1a5b0b1f 192.168.166.9:6379 myself,master - 0 0 2 connected 0-5461
bbdc8d353e2afa87d3d1430eecbbe436206fd213 192.168.166.9:6384 master - 0 1709263042550 4 connected
20a5e5bb03ab273fea553b3ccafeba01e83a6eb2 192.168.166.9:6380 master - 0 1709263043052 1 connected
98fe02fecd9f99d2d220cbf3de921063a9413428 192.168.166.9:6383 master - 0 1709263045565 3 connected 10923-16383
​

查看master节点ID

[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6380 cluster replicate a8b96d687e681dd4c606e6959468b2bc1a5b0b1f
OK
[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6382 cluster replicate 69ed2c9d99ac83e52851d67e2597927142f47ebf
OK
[root@localhost redis]# redis-cli -h 192.168.166.9 -p 6384 cluster replicate 98fe02fecd9f99d2d220cbf3de921063a9413428
OK
​

4、集群操作命令

命令作用
cluster info打印集群的信息
cluster nodes列出集群当前已知的所有节点( node),以及这些节点的相关信息。
cluster meet <ip> <port>将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget <node_id>从集群中移除 node_id 指定的节点。
cluster replicate <master_node_id>将当前从节点设置为 node_id 指定的master节点的slave节点。只能针对slave节点操作。
cluster saveconfig将节点的配置文件保存到硬盘里面。
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 槽中的键 。
cluster reset重置集群命令

四、故障恢复

1、模式故障

kill -9  PID #杀死其中一个redis进程

2、故障恢复

  1. 启动杀死的redis进程

  2. 通过 cluster nodes查看节点状态

  3. 通过 cluster info 查看集群状态

  4. 登录所有从节点

3、cluster failover命令

Redis Cluster模式下的cluster failover(集群故障转移)的作用是确保Redis集群在主节点(Master)发生故障或不可用的情况下,能够自动将主节点的工作负载转移到备用节点(Slave)上,并使备用节点成为新的主节点,保证Redis集群的高可用性和持续可用性。

当主节点发生故障时,Redis Cluster会自动检测到主节点的不可用,并从备用节点中选出一个合适的备用节点作为新的主节点。该备用节点经过选举后,会接管原主节点的数据和工作负载,并开始对外提供服务。集群的其它节点也会更新集群拓扑信息,以便客户端能够正确地路由请求到新的主节点。

cluster failover的作用主要包括:

  1. 高可用性:当主节点发生故障时,能够及时切换到备用节点,保证Redis集群的继续正常运行,避免因单点故障而导致服务不可用。

  2. 数据保护:在主节点发生故障时,能够将数据从主节点复制到备用节点,并在故障转移时将备用节点提升为新的主节点,从而保证数据的持久性和一致性。

  3. 自动化管理:集群故障转移是自动化过程,无需人工干预,减少了对系统运维的依赖,并提高了系统的可靠性和可维护性。

yum安装redis实现Cluster集群案例

yum安装

准备两台主机(ip分别为192.168.58.180、192.168.58.182、192.168.58.183)

1、更改配置文件

####192.168.58.180
##安装redis-server
[root@localhost ~]# yum install -y redis-server
​
##更改配置文件
[root@localhost ~]# vim /etc/redis.conf 
##找到bind 127.0.0.1 -::1并把它改为:
bind 192.168.58.180 
​
##找到protected-mode no把它改为:
protected-mode no
​
##找到daemonize no把它改为:
daemonize yes
​
##在最后加上
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
​
[root@localhost ~]# cp /etc/reddis.conf /etc/redis_6380.conf
[root@localhost ~]# vim /etc/redis_6380.conf 
##在文件里面使用改命令,把6379全部改为6380
:%s/6379/6380/g
​
##在最后把cluster-config-file nodes.conf改为:
cluster-config-file nodes_6380.conf
​
[root@localhost ~]# ps aux | grep redis
root      548851  0.0  0.2  21992  7804 pts/0    S+   16:36   0:00 grep --color=auto redis
​
##注意要用绝对路径启动服务
[root@localhost ~]# redis-server /etc/redis.conf 
[root@localhost ~]# redis-server /etc/redis_6380.conf 
[root@localhost ~]# !ps
ps aux | grep redis
root      549663  0.1  0.3 154880 12172 ?        Ssl  16:38   0:00 redis-server 192.168.58.180:6379 [cluster]
root      549724  0.2  0.3 154880 12136 ?        Ssl  16:38   0:00 redis-server 192.168.58.180:6380 [cluster]
root      549839  0.0  0.2  21992  7908 pts/0    S+   16:38   0:00 grep --color=auto redis
​
​
####192.168.58.182
##安装redis-server
[root@localhost ~]# yum install -y redis-server
​
##更改配置文件
[root@localhost ~]# vim /etc/redis.conf 
##找到bind 127.0.0.1 -::1并把它改为:
bind 192.168.58.182
​
##找到protected-mode no把它改为:
protected-mode no
​
##找到daemonize no把它改为:
daemonize yes
​
##在最后加上
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
​
[root@localhost ~]# cp /etc/reddis.conf /etc/redis_6380.conf
[root@localhost ~]# vim /etc/redis_6380.conf 
##在文件里面使用改命令,把6379全部改为6380
:%s/6379/6380/g
​
##在最后把cluster-config-file nodes.conf改为:
cluster-config-file nodes_6380.conf
​
[root@localhost redis]# redis-server /etc/redis.conf 
[root@localhost redis]# redis-server /etc/redis_6380.conf  
####192.168.58.183
##安装redis-server
[root@localhost ~]# yum install -y redis-server
​
##更改配置文件
[root@localhost ~]# vim /etc/redis.conf 
##找到bind 127.0.0.1 -::1并把它改为:
bind 192.168.58.183
​
##找到protected-mode no把它改为:
protected-mode no
​
##找到daemonize no把它改为:
daemonize yes
​
##在最后加上
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
​
[root@localhost ~]# cp /etc/reddis.conf /etc/redis_6380.conf
[root@localhost ~]# vim /etc/redis_6380.conf 
##在文件里面使用改命令,把6379全部改为6380
:%s/6379/6380/g
​
##在最后把cluster-config-file nodes.conf改为:
cluster-config-file nodes_6380.conf
​
[root@localhost redis]# redis-server /etc/redis.conf 
[root@localhost redis]# redis-server /etc/redis_6380.conf  

2、将其他节点加入集群

####192.168.58.180
[root@localhost ~]# redis-cli -h 192.168.58.180
192.168.58.180:6379> cluster nodes
83025a16978dbd24bed4d7c4404c247e3b267f43 :6379@16379 myself,master - 0 0 0 connected
​
192.168.58.180:6379> CLUSTER MEET 192.168.58.180 6380
OK
192.168.58.180:6379> cluster nodes
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 master - 0 1752223123275 0 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 myself,master - 0 0 1 connected
​
192.168.58.180:6379> CLUSTER MEET 192.168.58.182 6379
OK
192.168.58.180:6379> CLUSTER MEET 192.168.58.182 6380
OK
192.168.58.180:6379> CLUSTER MEET 192.168.58.183 6379
OK
192.168.58.180:6379> CLUSTER MEET 192.168.58.183 6380
OK
192.168.58.180:6379> cluster nodes
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 master - 0 1752223229129 0 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752223231304 6 connected
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 master - 0 1752223232466 0 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 myself,master - 0 1752223228000 1 connected
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752223231000 2 connected
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 master - 0 1752223227919 3 connected
192.168.58.180:6379> exit

3、分配slot

####192.168.58.180
##分配slot(也是在规划谁是master节点及管理的槽位)
[root@localhost ~]# redis-cli -h 192.168.58.180 -p 6379 cluster addslots {0..5461}
OK
[root@localhost ~]# redis-cli -h 192.168.58.182 -p 6381 cluster addslots {5462..10922}
Could not connect to Redis at 192.168.58.182:6381: Connection refused
[root@localhost ~]# redis-cli -h 192.168.58.182 -p 6379 cluster addslots {5462..10922}
OK
[root@localhost ~]# redis-cli -h 192.168.58.183 -p 6379 cluster addslots {10923..16383}
OK
[root@localhost ~]# redis-cli -h 192.168.58.180
192.168.58.180:6379> cluster nodes
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 master - 0 1752223535303 0 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752223534145 6 connected 10923-16383
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 master - 0 1752223533000 7 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 myself,master - 0 1752223527000 1 connected 0-5461
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752223536464 2 connected 5462-10922
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 master - 0 1752223537591 3 connected
192.168.58.180:6379> exit

4、建立主从关系

####192.168.58.180
##用主的节点ID建立一一对应的主从关系
[root@localhost ~]# redis-cli -h 192.168.58.180 -p 6380 cluster replicate 83025a16978dbd24bed4d7c4404c247e3b267f43
OK
[root@localhost ~]# redis-cli -h 192.168.58.180
192.168.58.180:6379> cluster nodes
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 master - 0 1752223782000 0 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752223782076 6 connected 10923-16383
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 slave 83025a16978dbd24bed4d7c4404c247e3b267f43 0 1752223782428 1 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 myself,master - 0 1752223765000 1 connected 0-5461
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752223783575 2 connected 5462-10922
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 master - 0 1752223784731 3 connected
192.168.58.180:6379> exit
[root@localhost ~]# redis-cli -h 192.168.58.182 -p 6380 cluster replicate 0b2ffa9b8510eeebffddbdf242d968b784768891
OK
[root@localhost ~]# redis-cli -h 192.168.58.183 -p 6380 cluster replicate 8b426ac7d752f8f65ecf035b555b8ef9465cd517
OK
​

5、查看集群部署情况

####192.168.58.180
[root@localhost ~]# redis-cli -h 192.168.58.180
192.168.58.180:6379> cluster nodes
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 slave 8b426ac7d752f8f65ecf035b555b8ef9465cd517 0 1752223872659 6 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752223871510 6 connected 10923-16383
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 slave 83025a16978dbd24bed4d7c4404c247e3b267f43 0 1752223874577 1 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 myself,master - 0 1752223874000 1 connected 0-5461
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752223873778 2 connected 5462-10922
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 slave 0b2ffa9b8510eeebffddbdf242d968b784768891 0 1752223874915 2 connected

6、验证不同节点管理不同槽位

####192.168.58.180
##验证:不同的槽位放在固定的数值,需要进入对应的节点才能设置键值对,否则做出提示让你到对应的节点设置
192.168.58.180:6379> set a 1
(error) MOVED 15495 192.168.58.183:6379
192.168.58.180:6379> exit
​
[root@localhost ~]# redis-cli -h 192.168.58.183
192.168.58.183:6379> set a 1
OK
192.168.58.183:6379> set b 2
(error) MOVED 3300 192.168.58.180:6379
192.168.58.183:6379> exit
​
[root@localhost ~]# redis-cli -h 192.168.58.180
192.168.58.180:6379> set b 2
OK
192.168.58.180:6379> exit

7、模拟主节点出故障,从节点接替管理槽位

####192.168.58.180
[root@localhost ~]# ps aux | grep redis
root      549663  0.2  0.3 154880 11896 ?        Ssl  16:38   0:03 redis-server 192.168.58.180:6379 [cluster]
root      549724  0.2  0.3 154880 11868 ?        Ssl  16:38   0:03 redis-server 192.168.58.180:6380 [cluster]
root      563007  0.0  0.2  21992  7912 pts/0    S+   17:00   0:00 grep --color=auto redis
[root@localhost ~]# kill 549663
[root@localhost ~]# ps aux | grep redis
root      549724  0.2  0.3 154880 11868 ?        Ssl  16:38   0:03 redis-server 192.168.58.180:6380 [cluster]
root      563171  0.0  0.2  21992  8012 pts/0    S+   17:00   0:00 grep --color=auto redis
​
[root@localhost ~]# redis-cli -h 192.168.58.180
Could not connect to Redis at 192.168.58.180:6379: Connection refused
not connected> exit
[root@localhost ~]# redis-cli -h 192.168.58.180 -p 6380
192.168.58.180:6380> cluster nodes
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752224473097 2 connected 5462-10922
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 myself,master - 0 1752224417000 8 connected 0-5461
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 slave 8b426ac7d752f8f65ecf035b555b8ef9465cd517 0 1752224471974 6 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 master,fail - 1752224435167 1752224430704 1 disconnected
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 slave 0b2ffa9b8510eeebffddbdf242d968b784768891 0 1752224474256 2 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752224470842 6 connected 10923-16383
192.168.58.180:6380> get b
"2"
192.168.58.180:6380> exit
​
​
##等原来的192.168.58.180 6379重新连接上,已经从master变为了slave
[root@localhost ~]# redis-server /etc/redis.conf 
[root@localhost ~]# ps aux | grep redis
root      549724  0.2  0.3 154880 11996 ?        Ssl  16:38   0:03 redis-server 192.168.58.180:6380 [cluster]
root      564268  0.2  0.3 157952 12048 ?        Ssl  17:02   0:00 redis-server 192.168.58.180:6379 [cluster]
root      564383  0.0  0.2  21992  7912 pts/0    S+   17:02   0:00 grep --color=auto redis
[root@localhost ~]# redis-cli -h 192.168.58.180 -p 6380
192.168.58.180:6380> cluster nodes
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752224565575 2 connected 5462-10922
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 myself,master - 0 1752224558000 8 connected 0-5461
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 slave 8b426ac7d752f8f65ecf035b555b8ef9465cd517 0 1752224564418 6 connected
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 slave ab9daba33fd7aba28734f3c43734aec5d42944a6 0 1752224563299 8 connected
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 slave 0b2ffa9b8510eeebffddbdf242d968b784768891 0 1752224565222 2 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752224562181 6 connected 10923-16383
192.168.58.180:6380> exit

8、手动触发主从切换

####192.168.58.180
##在 Redis 集群中使用CLUSTER FAILOVER命令手动触发主从切换
[root@localhost ~]# redis-cli -h 192.168.58.180 -p 6379
192.168.58.180:6379> CLUSTER FAILOVER
OK
192.168.58.180:6379> CLUSTER NODES
ab9daba33fd7aba28734f3c43734aec5d42944a6 192.168.58.180:6380@16380 slave 83025a16978dbd24bed4d7c4404c247e3b267f43 0 1752224639970 9 connected
0b2ffa9b8510eeebffddbdf242d968b784768891 192.168.58.182:6379@16379 master - 0 1752224642000 2 connected 5462-10922
2ef3226f071ca16473adc3edf17869b266b91773 192.168.58.182:6380@16380 slave 0b2ffa9b8510eeebffddbdf242d968b784768891 0 1752224643000 2 connected
8b426ac7d752f8f65ecf035b555b8ef9465cd517 192.168.58.183:6379@16379 master - 0 1752224642296 6 connected 10923-16383
83025a16978dbd24bed4d7c4404c247e3b267f43 192.168.58.180:6379@16379 myself,master - 0 1752224639000 9 connected 0-5461
d9e5540b8e54d4340903380998bf1dacad77c990 192.168.58.183:6380@16380 slave 8b426ac7d752f8f65ecf035b555b8ef9465cd517 0 1752224644527 6 connected

看到感觉有帮助的朋友,劳烦动动发财的小手给博主点个赞

Ubuntu运行vmware时报错Vmware Unable to install all modules!Use shipped Linux kernel AIO access library解决。 Ubuntu运行vmware时报错Vmware Unable to install all modules! vmware --version 提示下面内容: [AppLoader] Use shipped Linux kernel AIO access library. An up-to-date "libaio" or "libaio1" package from your system is preferred. VMware Workstation 16.1.2 build-17966106 阅读详情

相关推荐

Prompt Learning 简介

• Prompt Learning 可以将所有的任务归一化预训练语言模型的任务• 避免了预训练和fine-tuning 之间的gap,几乎所有 NLP 任务都可以直接使用,不需要训练数据。• 在少样本的数据集上,能取得超过fine-tuning的效果。• 使得所有的任务在方法上变得一致。

jxsdq的博客 1万+

Redis Cluster 集群详解

Redis 分布式扩展之 Redis Cluster 方案 主从切换的过程中会丢失数据,因为只有一个 master,只能单点写,没有解决水平扩容的问题。而且每个节点都保存了所有数据,一个是内存的占用率较高,另外就是如果进行数据恢复时,非常慢。而且数据量过大对数据 IO 操作的性能也会有影响。 所以我们同样也有对 Redis 数据分片的需求,所谓分片就是把一份大数据拆分成多份小数据,在 3.0 之前,我们只能通过构建多个 redis 主从节点集群,把不同业务数据拆分到不冉的集群中,这种方式在业务层需要有大量的

Java是世界上最好的语言 1万+

单片机:实现简单的时间片轮询调度(附完整源码)

单片机:实现简单的时间片轮询调度(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 383

redis分布式方案redis cluster的介绍和实践

简要介绍 redis cluster是redis官方提供的分布式解决方案。主要作用有两点: 将数据根据分区规则分布到不同的redis节点上,降低单个redis节点的读写压力。 内置提供高可用支持,集群中的每个主节点可以设置多个从节点,主节点故障后,从节点可以自动替换继续保证redis的使用。 分布式的方案要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负...

markfengfeng的博客 1018

数控系统(CNC)系列:Fanuc 31i-B_(16).CNC系统的网络连接与数据传输

硬件连接:包括网络接口的类型、连接方式等。网络协议:常用的网络协议包括Ethernet、Modbus TCP、Profinet等。网络配置:如何在CNC系统中配置网络参数,使其能够正确接入网络。在网络化的现代工业生产环境中,CNC系统的网络连接和数据传输能力变得越来越重要。通过以太网、Modbus TCP和Profinet等网络协议,可以实现CNC系统与上位机、其他CNC系统以及各种工业设备之间的高效通信。

2401_87715305的博客 2434

061、LQR(线性二次型调节器)控制基础

本文介绍了LQR(线性二次型调节器)控制在飞控系统中的应用。作者通过一次四旋翼炸机事故引出PID控制的局限性,详细讲解了LQR的数学原理、权重矩阵的物理意义以及实际工程实现方法。文章对比了LQR与PID的控制效果,指出LQR在鲁棒性方面的优势,同时也分析了其存在稳态误差等缺点。最后总结了LQR在飞控中的适用场景,建议将LQR与PID结合使用,并预告了下一章将讨论带积分项的LQI控制。全文包含具体案例、代码实现和调参经验,为飞控算法开发者提供了实用指导。

2401_88858637的博客 720

Redis - 集群(Cluster)

上述的哨兵模式,提⾼了系统的可⽤性.但是真正⽤来存储数据的还是master和slave节点.所有的数 据都需要存储在单个master和slave节点中.如果数据量很⼤,接近超出了master/slave所在机器的物理内存,就可能出现严重问题了.如何获取更⼤的空间?加机器即可!所谓"⼤数据"的核⼼,其实就是⼀台机器搞不定了,⽤多台机器来 搞.Redis 的集群就是在上述的思路之下,引⼊多组Master/Slave,每⼀组Master/Slave存储数据全集的 ⼀部分,从⽽构成⼀个更⼤的整体,称为Redis集群

ketil27的博客 3656

FPGA入门200例(17):如何阅读RTL原理图(Schematic)?将Verilog代码与门级电路对应

本文针对FPGA开发新手常见误区,重点讲解了RTL原理图的重要性和阅读方法。文章指出,仅通过仿真验证代码会导致板级测试异常,而RTL原理图能直观呈现Verilog代码对应的硬件结构(门电路、寄存器、多路选择器等)。通过"识别基础元件→跟踪信号路径→验证逻辑关系"的三步法,新手可以建立代码与硬件的映射思维,排查冗余逻辑、意外锁存器等错误。文章还结合Vivado/Quartus工具操作指南和典型代码案例,帮助读者掌握从代码到硬件实现的转换过程,避免混淆RTL与门级原理图、忽略信号位宽等常见误

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 197

redis集群-Cluser

https://www.cnblogs.com/liuqingzheng/articles/17324393.html 1.2 解决 二 数据分布(分布式数据库) 2.1 存在问题 2.2 分区方式 分布方式 特点 产品 哈希分布 数据分散度高,建值分布于业务无关,无法顺序访问,支持批量操作 一致性哈希memcache,redis cluster,其他缓存产品 顺序分布 数据分散度易倾斜,建值业务相关,可顺序访问,支持批量操作 BigTable,HBase 2.2.1 顺序分区

cxtyabc的博客 249

基于最小二乘法(LS)和最小均方误差(MMSE)算法的导频信道估计

导频信道估计在无线通信系统中起着至关重要的作用,它用于估计无线信道的特性,以便在接收端进行正确的信号解调和解码。最小二乘法(LS)和最小均方误差(MMSE)是两种常用的导频信道估计算法,它们在估计精度和计算复杂度之间取得了良好的平衡。首先,我们提取当前的导频符号,然后将接收到的信号与导频符号相乘得到接收导频信号。最小二乘法是一种经典的导频信道估计算法,它通过最小化接收信号与预测信号之间的均方误差来估计信道。下面将详细介绍基于LS和MMSE算法的导频信道估计,并提供相应的MATLAB代码实现。

pytorchCode的博客 678

AutoSAR配置视频讲解:新建DaVinci工程

AutoSAR实验视频讲解:闪烁一颗LED实验【新建DaVinci工程】 上一篇 | 下一篇 | 总目录 实验架构图 视频本频放在了文末,下图描述了本次实验配置内容在AutoSAR架构中的位置,供大家参考 实验内容 本节课程讲解新建DaVinci工程,听上去新建工程很简单,但是还是需要很多的准备工作和细节。主要内容是新建工程和导入dbc文件和导入arxml文件的方法 主要步骤 新建DaVinci工程 导入.dbc通信矩阵文件 导入Mcal的arxml文件 实验视频2:Mcal配置 提示:版权所在,违

雪云飞星的博客 6275

Redis Cluster(无中心化设计)

在哨兵sentinel机制中,可以解决redis高可用问题,即当master故障后可以自动将slave提升为master,从而可以保证redis服务的正常使用,但是无法解决redis单机写入的瓶颈问题,即单机redis写入性能受 限于单机的内存大小、并发数量、网卡速率等因素。redis 3.0版本之后推出了无中心架构的机制,在无中心的redis集群当中,其每个节点保存当前节点数据和整个集群状态,每个节点都和其他所有节点连接。

weixin_68398469的博客 1272

厉害了,华为推出下一代光传送网:fgOTN

2024年10月,在全球信息技术博览会(GITEX Global 2024)上,华为正式发布了其颠覆性的创新产品——端到端细粒度光传送网(fgOTN)解决方案。这一产品组合被誉为行业内首个fgOTN,旨在重塑光传送网络的格局,满足电力运输等行业日益增长的通信需求。在过去的近三十年中,同步数字体系(SDH)技术一直是电信和工业网络的支柱,因其可靠性、稳定性和低延迟而备受青睐。然而,随着数据需求的激增,SDH的最大带宽仅为10 Gbps,逐渐显露出局限性。

网络技术联盟站 635

【Redis】深入探索 Redis 集群(Cluster)模式的概念、原理、数据分片算法,基于 Docker 模拟搭建 Redis 集群分布式架构

Redis Cluster 是一种分布式集群模式,它允许将数据分散存储在多个节点上,从而提供了横向扩展、高可用性和更大存储容量。Redis Cluster 有以下关键特点: 分布式数据存储: Redis Cluster 将数据划分为多个槽(slot),这些槽分布在不同的节点上。每个节点负责管理一部分槽中的数据,这样数据可以分布在多个节点上,避免了单节点存储容量的限制。 自动数据分片: Redis Cluster 使用哈希槽来分片数据,客户端根据键的哈希值将数据路由到正确的节点。这使得数据的分片和路由是自

qq_61635026的博客 4523

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

redis Cluster集群介绍

0、常见的几种模式对比 一、redis cluster 是什么 二、集群架构图 三、集群原理图 四、集群通信 1)集群发现:MEET 2)gossip协议 五、集群概念 1)多slave选举 2)slot(槽) 3)数据分片 4)请求重定向 5)数据迁移 6)故障转移 7)集群slots是否必须完整才能对外提供服务 六、集群健康检查机制 七、各语言的推荐客户端 0、常见的几种模式对比 模式 版本

不忘初心,方得始终 7678

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Redis集群详解

Redis集群中,在握手成功后,连个节点之间会定期发送ping/pong消息,交换数据信息,集群中节点数量越多,消息体内容越大,比如说10个节点的状态信息约1kb,同时redis集群内节点,每秒都在发ping消息。如下图所示,三个节点真实节点:Node1、Node2和Node3,每个真实节点虚拟出三个虚拟节点:X#V1、X#V2和X#V3,这样每个真实节点所负责的hash空间不再是连续的一段,而是分散在环上的各处,这样就可以将局部的压力均衡到不同的节点,虚拟节点越多,分散性越好,理论上负载就越倾向均匀。

励志成为一名优秀的全能型软件开发工程师。 1448

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Redis Cluster-集群

Redis Cluster是Redis的分布式解决方案, 在3.0版本正式推出, 有效地解决了Redis分布式方面的需求。 当遇到单机内存、 并发、 流量等瓶颈时, 可 以采用Cluster架构方案达到负载均衡的目的。 之前, Redis分布式方案一般有两种: ·客户端分区方案, 优点是分区逻辑可控, 缺点是需要自己处理数据路由、 高可用、 故障转移等问题。 ·代理方案, 优点是简化客户端分布式逻辑和升级维护便利, 缺点是加重架构部署复杂度和性能损耗。 现在官方为我们提供了专有的集群方案: Redis Cl

chenbin1991smile的博客 502

【Redis Cluste】认识Redis集群 Redis Cluster

【Redis】Redis Cluster简单概述---redis集群

大菜鸡の博客 436

Redis Cluster集群的简介

Redis Cluster集群的简介简介Redis Cluster集群特点Redis Cluster容错redis-cluster节点分配Redis Cluster高可用(Redis Cluster主从模式)Redis Cluster总结 简介 • 为什么使用redis-cluster?       为了在大流量访问下提供稳定的业务,集群化是存储的必然形态 Redis集群搭建的方式有多种,但从redis 3.0之后版本支持redis-cluste

Hello World 616

Redis集群(Cluster)

三种数据分片算法,搭建redis集群,redis集群扩容

weixin_61427900的博客 3852

Redis集群(读写分离、哨兵机制、Cluster集群)

文章目录概念概述读写分离哨兵机制Redis内置集群内置集群搭建操作环境 概念概述 读写分离 哨兵机制 Redis内置集群 内置集群搭建 操作环境

Dean_xiu的博客 9658

【Redis】——redis cluster介绍

一、前言 redis最开始使用主从模式做集群,若master宕机需要手动配置slave转为master;后来为了高可用提出来哨兵模式,该模式下有一个哨兵监视master和slave,若master宕机可自动将slave转为master,但它也有一个问题,就是不能动态扩充;所以在3.x提出cluster集群模式。 二、redis-cluster设计 Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。每个节点都负责进行数据读写操作,每个...

汤庆 2366

Redis Cluster流程原理

拓扑结构 配置的一致性 1、配置信息数据结构 2、信息交互 3、一致性的达成 sharding 1、数据分片(slot) 2、客户端的路由 3、分片的迁移 failover 1、failover的状态变迁 2、故障发现 3、故障确认 4、slave选举 5、结构变更通知 可用性和性能 1、Redis Cluster的读写分离 2、master单点保护 Redis 3.0之...

Fouy_风度玉门。 1万+

Redis 学习笔记(十四)Redis Cluster介绍与搭建

Redis Cluster 介绍与搭建1. Redis Cluster介绍Redis Cluster是Redis的分布式解决方案,在Redis 3.0版本正式推出的,有效解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构达到负载均衡的目的。1.1 数据分布理论分布式数据库首要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每

men_wen的博客 3万+

Redis cluster集群:原理及搭建

1.为什么使用redis?redis是一种典型的no-sql 即非关系数据库 像python的字典一样 存储key-value键值对 工作在memory中所以很适合用来充当整个互联网架构中各级之间的cache 比如lvs的4层转发层 nginx的7层代理层尤其是lnmp架构应用层如php-fpm或者是Tomcat到mysql之间 做一个cache 以减轻db的压力因为有相当一部分的数据 只是简单的...

MayMatrix 的博客 9万+

Redis——cluster集群

redis集群配置

FlyLikeButterfly的博客 1万+
上一篇: Redis Sentinel哨兵集群(小白的“升级打怪”成长之路)
下一篇: LVS负载均衡集群配置(小白的“升级打怪”成长之路)
deeper_wind
博客等级 码龄2年 262粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值