技术标签: redis
1:Redis集群没有使用一致性hash,而是引入了哈希槽概念
2:Redis 集群有16384个哈希槽
3:每个key通过CRC16校验后对16384取模来决定放置槽
4:集群的每个节点负责一部分哈希槽
5:以3个节点组成的集群为例
6:添加删除节点无需停止服务
1:每台服务器导入redis软件包,其中一台主redis要有群集文件
2:解压缩redis软件包,6台服务器同步操作
[root@redis1 ~]# tar zxvf redis-5.0.4.tar.gz
3:配置安装,6台服务器同步操作
[root@redis1 ~]# cd redis-5.0.4/
[root@redis1 redis-5.0.4]# make
[root@redis1 redis-5.0.4]# make PREFIX=/usr/local/redis install
4:链接快捷命令,6台服务器同步操作
[root@redis1 ~]# ln -s /usr/local/redis/bin/* /usr/local/bin/
5:设置Redis相关配置文件,6台服务器同步操作
[root@redis1 ~]# cd redis-5.0.4/utils/
[root@redis1 utils]# ./install_server.sh
[root@redis1 utils]# netstat -anptu | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 59531/redis-server
6:修改主配置文件,6台服务器同步操作
[root@slave3 ~]# vi /etc/redis/6379.conf
cluster-enabled yes
appendonly yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
cluster-require-full-coverage yes
修改IP地址需要每台服务器单独修改
[root@redis1 ~]# vi /etc/redis/6379.conf
bind 20.0.0.10
[root@redis2 ~]# vi /etc/redis/6379.conf
bind 20.0.0.11
[root@redis3 ~]# vi /etc/redis/6379.conf
bind 20.0.0.12
[root@slave1 ~]# vi /etc/redis/6379.conf
bind 20.0.0.13
[root@slave2 ~]# vi /etc/redis/6379.conf
bind 20.0.0.14
[root@slave3 ~]# vi /etc/redis/6379.conf
bind 20.0.0.15
7:重启服务,6台服务器同步操作
[root@redis1 ~]# /etc/init.d/redis_6379 restart
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
Starting Redis server...
[root@redis1 ~]# netstat -anptu | grep redis
8:在20.0.0.10服务器上,使用脚本创建群集
[root@redis1 ~]# yum -y install ruby rubygems
[root@redis1 ~]# gem install redis-3.2.0.gem
9:建立群集
[root@redis1 ~]# redis-cli --cluster create --cluster-replicas 1 20.0.0.10:6379 20.0.0.11:6379 20.0.0.12:6379 20.0.0.13:6379 20.0.0.14:6379 20.0.0.15:6379
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 20.0.0.14:6379 to 20.0.0.10:6379
Adding replica 20.0.0.15:6379 to 20.0.0.11:6379
Adding replica 20.0.0.13:6379 to 20.0.0.12:6379
M: 2ce100a99c214bfac23ae1c31b8068e93506615b 20.0.0.10:6379
slots:[0-5460] (5461 slots) master
M: 5f5ff79b9301f10e175aea6604ff80372d6c97a8 20.0.0.11:6379
slots:[5461-10922] (5462 slots) master
M: a6234f074de2ee05b4f7c1ba96c8a3e084104dd4 20.0.0.12:6379
slots:[10923-16383] (5461 slots) master
S: b378987085da43974359cb02bcbc9443e808bb13 20.0.0.13:6379
replicates a6234f074de2ee05b4f7c1ba96c8a3e084104dd4
S: 5d27b053b2607dfed82f79d29aa2e5c3b8846bc2 20.0.0.14:6379
replicates 2ce100a99c214bfac23ae1c31b8068e93506615b
S: 1d2b8d8fd38f5e7c2dce00ee43e13f162a18508d 20.0.0.15:6379
replicates 5f5ff79b9301f10e175aea6604ff80372d6c97a8
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
..
>>> Performing Cluster Check (using node 20.0.0.10:6379)
M: 2ce100a99c214bfac23ae1c31b8068e93506615b 20.0.0.10:6379
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: a6234f074de2ee05b4f7c1ba96c8a3e084104dd4 20.0.0.12:6379
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 1d2b8d8fd38f5e7c2dce00ee43e13f162a18508d 20.0.0.15:6379
slots: (0 slots) slave
replicates 5f5ff79b9301f10e175aea6604ff80372d6c97a8
S: b378987085da43974359cb02bcbc9443e808bb13 20.0.0.13:6379
slots: (0 slots) slave
replicates a6234f074de2ee05b4f7c1ba96c8a3e084104dd4
M: 5f5ff79b9301f10e175aea6604ff80372d6c97a8 20.0.0.11:6379
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 5d27b053b2607dfed82f79d29aa2e5c3b8846bc2 20.0.0.14:6379
slots: (0 slots) slave
replicates 2ce100a99c214bfac23ae1c31b8068e93506615b
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
10:测试群集
登录写入一个数据
[root@redis1 ~]# redis-cli -h 20.0.0.10 -p 6379 -c
20.0.0.10:6379> set aaa 111
-> Redirected to slot [10439] located at 20.0.0.11:6379
OK
另一台主服务器获取数据
[root@redis3 ~]# redis-cli -h 20.0.0.13 -p 6379 -c
20.0.0.13:6379> get aaa
-> Redirected to slot [10439] located at 20.0.0.11:6379
"111"
登录不同服务器获取数据
[root@redis2 ~]# redis-cli -h 20.0.0.13 -p 6379 -c
20.0.0.13:6379> get aaa
-> Redirected to slot [10439] located at 20.0.0.11:6379
"111"
查看集群状态
20.0.0.11:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:2
cluster_stats_messages_ping_sent:5018
cluster_stats_messages_pong_sent:4927
cluster_stats_messages_meet_sent:2
cluster_stats_messages_sent:9947
cluster_stats_messages_ping_received:4923
cluster_stats_messages_pong_received:5020
cluster_stats_messages_meet_received:4
cluster_stats_messages_received:9947
查看节点状态
20.0.0.11:6379> cluster nodes
5d27b053b2607dfed82f79d29aa2e5c3b8846bc2 20.0.0.14:6379@16379 slave 2ce100a99c214bfac23ae1c31b8068e93506615b 0 1608200801776 1 connected
b378987085da43974359cb02bcbc9443e808bb13 20.0.0.13:6379@16379 slave a6234f074de2ee05b4f7c1ba96c8a3e084104dd4 0 1608200799000 3 connected
a6234f074de2ee05b4f7c1ba96c8a3e084104dd4 20.0.0.12:6379@16379 master - 0 1608200801000 3 connected 10923-16383
1d2b8d8fd38f5e7c2dce00ee43e13f162a18508d 20.0.0.15:6379@16379 slave 5f5ff79b9301f10e175aea6604ff80372d6c97a8 0 1608200802783 6 connected
5f5ff79b9301f10e175aea6604ff80372d6c97a8 20.0.0.11:6379@16379 myself,master - 0 1608200801000 2 connected 5461-10922
2ce100a99c214bfac23ae1c31b8068e93506615b 20.0.0.10:6379@16379 master - 0 1608200801000 1 connected 0-5460
11:宕机测试
主服务器停止服务
[root@redis1 ~]# pkill redis
查看状态
20.0.0.11:6379> cluster nodes
5d27b053b2607dfed82f79d29aa2e5c3b8846bc2 20.0.0.14:6379@16379 slave 2ce100a99c214bfac23ae1c31b8068e93506615b 0 1608201296530 1 connected
b378987085da43974359cb02bcbc9443e808bb13 20.0.0.13:6379@16379 slave a6234f074de2ee05b4f7c1ba96c8a3e084104dd4 0 1608201297542 3 connected
a6234f074de2ee05b4f7c1ba96c8a3e084104dd4 20.0.0.12:6379@16379 master - 0 1608201298547 3 connected 10923-16383
1d2b8d8fd38f5e7c2dce00ee43e13f162a18508d 20.0.0.15:6379@16379 slave 5f5ff79b9301f10e175aea6604ff80372d6c97a8 0 1608201299558 6 connected
5f5ff79b9301f10e175aea6604ff80372d6c97a8 20.0.0.11:6379@16379 myself,master - 0 1608201294000 2 connected 5461-10922
2ce100a99c214bfac23ae1c31b8068e93506615b 20.0.0.10:6379@16379 master,fail - 1608201280782 1608201277358 1 disconnected 0-5460
备份20.0.0.15以上线
文章浏览阅读387次。原文链接:全卷积网络 FCN 详解FCN是深度学习应用在图像分割的代表作, 是一种端到端(end to end)的图像分割方法, 让网络做像素级别的预测直接得出label map, 下面我们来看看FCN是如何做到像素级别的分类的 论文 : Fully Convolutional Networks for Semantic Segmentation FCN代码及模型 FCN模型结构基本概念图像分..._fcn模型中融合是通道数相加吗
文章浏览阅读849次。注意:每次运行前,请确保已经删除一些上次的运行结果[root@master mapreduce]# hdfs dfs -rm -r /output执行的txt文件是需要自己编写内容后上传的。[root@master ~]# hdfs dfs -put CountWord.txt /input请注意对比前两张运行失败,第三张运行成功:运行成功详细信息:[root@master ~]# hadoop jar /usr/local/hadoop/share/hadoop/mapred_hdfs dfs -rm -r /output
文章浏览阅读1.1w次,点赞4次,收藏27次。1.USB扫描枪 USB接口的扫描枪相当于键盘输入,在Windows或者Linux下,在成功安装驱动的前提下,打开文件编辑器如word、txt等。扫描枪读出到条码数据时,数据即被捕获到光标处。2.Linux下读取数据2.1扫描枪设备 USB扫描枪相当于一个键盘输入设备,Windows或者Linux下都集成相关驱动,或者免驱动。基于ARM下的Linux系统,接入扫描枪,在“/de_linux 扫码枪
文章浏览阅读1.7k次。mips pwn_mips pwn
文章浏览阅读452次。《小学数学教材解读》紫阳第二小学 饶炽奎紫阳小学方元高各位老师:下午好!今天下午分享的专题是《小学数学教材解读》。为什么要分享这个专题呢?那是因为,教材决定着我们教什么,老师把它称为“教本”,学生把它称为“课本”,说明它是学习之本。教材承载着知识,是课标的具体化,体现的是国家意志,课程改革改得最多的也是教材。所以,我们的教学从研读教材入手。那么接下来的问题是:我们到底要从教材中解读出什么!这就要看学生学什么,学生学什么我们就要解读出什么!看看下面这页教材,如果是你来执教,准备让..._模型思想与符号化思想的联系与区别
文章浏览阅读1.9k次,点赞5次,收藏9次。今日学习java,刚下sublime,编码中文时,发现原因是窗口默认是gbk需要在sublime里改变sublime编码方式,也改为gbk。可一看,无这选项上网看了别人教程,记录下来解决方案1.2.点击package control3.输入 package Control ,点install package4.输入conver 点击toUTF85.点击Set File Encoding to,选择gbk..._sublime更换编码格式
文章浏览阅读3.3k次,点赞8次,收藏16次。0: 项目需求近期项目有了新的需求, 需要根据地震数据绘制出对应图表, 关于这种图的资料比较少, 翻了不少网站, 也没找到太多有用的数据, 而关于Qt的, 更是只有一篇论文. 不过搜这么多资料也不是一无所获, 最起码知道了这种图的名字. 如标题所示, 下文统一称其为地震剖面图.1: 图形分析:上图是我查资料时找到的一张地震剖面图的图片, 可以看出,横轴代表通道, 纵轴代表时间, 图表中的折线按照则代表了震动的强度和方向(这一点说的可能不准确), 震动起来的部分,超出某个值的, 则将..._地震剖面图怎么看
文章浏览阅读2.1k次。在 JMeter 压力测试工具中使用变量出处:CSDN 责编:chinaitpower Apache JMeter( http://jakarta.apache.org/jmeter/ )是来自 Apache Jakarta 项目的一个压力测试工具, 目前版本2.0.3, JMeter 支持 HTTP, FTP, SOAP/XM_jmeter _g1
文章浏览阅读2.8k次。1、源码src文件夹下:新建slice_layer.c和slice_layer.hps:稍后我会放到我的GitHub上2、makefile文件中:OBJ添加slice_layer.o3、include/darknet.h文件中:(1)LAYER_TYPE添加SLICE:typedef enum { CONVOLUTIONAL, DECONVOLUTIONAL, ..._darknet 如何使用sam层
文章浏览阅读3.6k次,点赞2次,收藏3次。Java工具类(18)—时间格式化工具类时间格式化工具,一秒前,一分钟前,一小时前,昨天,一天前package com.awifi.cloudnative.container.rbac.user.provider.utils;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/*** @Author 张鑫* @Dat_java时间格式化工具类
文章浏览阅读659次。在为客户开发Android应用程序时,我们遇到了同样的问题,我设法绕过了这一限制。我查看了WebView类的Android源代码,发现了updateZoomButtonsEnabled()-method与ZoomButtonsController-object一起使用,以根据浏览器的当前比例来启用和禁用缩放控件。我搜索了一种返回ZoomButtonsController-instance的getZ..._webview禁止网页缩放
文章浏览阅读340次。题目描述读入一个实数,输出实数的整数部分。注意该实数的位数不超过100位。输入的整数部分可能含有不必要的前导0,输出时应去掉,当然,若整数部分为0,则该0不能去掉。如输入0023.56732,输出应为23,而不是0023;0.123对应的输出应为0。当然输入也可能不含小数部分。要求定义并使用rounding()函数,原型如下:char *rounding(char *p){//将字符串p表示的实数取整后生成新的字符串,并由函数返回}输入输入一个实数.输出输出整数部分。C语言代码#in_1541:实数取整c语言指针专题