当前位置: 首页 > news >正文

淮安做网站百度一下官网首页百度一下

淮安做网站,百度一下官网首页百度一下,一键生成动画视频,手机app开发制作推荐文章目录 一、单点Redis的问题及解决方案二、Redis持久化2.1 单机安装Redis2.2 RDB持久化2.3 AOF持久化2.4 RDB和AOF对比 三、Redis主从3.1 搭建Redis主从架构3.1.1 集群结构3.1.2 准备实例和配置3.1.3 启动3.1.4 开启主从关系3.1.5 测试 3.2 数据同步3.2.1 全量同步【建立连接… 文章目录 一、单点Redis的问题及解决方案二、Redis持久化2.1 单机安装Redis2.2 RDB持久化2.3 AOF持久化2.4 RDB和AOF对比 三、Redis主从3.1 搭建Redis主从架构3.1.1 集群结构3.1.2 准备实例和配置3.1.3 启动3.1.4 开启主从关系3.1.5 测试 3.2 数据同步3.2.1 全量同步【建立连接时】3.2.2 增量同步【slave从节点重启后】3.2.3 数据同步的优化3.2.4 总结 四、Redis哨兵【Sentinel实现哨兵故障转移】4.1 哨兵的作用和原理4.2 搭建哨兵集群4.2.1 集群结构4.2.2 准备实例和配置4.2.3 启动4.2.4 测试 4.3 RedisTemplate的哨兵模式 五、Redis分片集群5.1 搭建分片集群5.1.1 集群结构5.1.2 准备实例和配置5.1.3 启动5.1.4 创建集群5.1.5 测试 5.2 散列插槽5.3 集群伸缩【添加、删除Redis节点】5.3.1 添加节点5.3.2 删除节点 5.4 故障转移5.4.1 自动故障转移5.4.2 手动故障转移 5.5 RedisTemplate访问分片集群 一、单点Redis的问题及解决方案 数据丢失问题Redis是内存存储服务重启可能会丢失数据 并发能力问题单节点Redis并发能力虽然不错但也无法满足如618这样的高并发场景 故障恢复问题如果Redis宕机则服务不可用需要一种自动的故障恢复手段 存储能力问题Redis基于内存单节点能存储的数据量难以满足海量数据需求 解决方案 二、Redis持久化 2.1 单机安装Redis 首先需要安装Redis所需要的依赖 yum install -y gcc tcl然后将课前资料提供的Redis安装包上传到虚拟机的任意目录 例如我放到了/tmp目录 解压缩 tar -xvf redis-6.2.4.tar.gz解压后 进入redis目录 cd redis-6.2.4运行编译命令 make make install如果没有出错应该就安装成功了。 然后修改redis.conf文件中的一些配置 # 绑定地址默认是127.0.0.1会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问 bind 0.0.0.0 # 数据库数量设置为1 databases 1启动Redis redis-server redis.conf停止redis服务 redis-cli shutdown测试服务 当停止服务时redis会将数据保存在该目录下再次启动服务时会恢复数据。 Redis默认持久化但只是在停机时会保存数据但我们需要的是每隔一段时间就保存一下数据以下会采用两种持久化方案。 2.2 RDB持久化 bgsave的流程 RDB持久化默认会在停机执行一次也可以在redis.conf文件中设置保存时机如下 案例在redis.conf中设置每5秒修改一次就保存数据设置保存的文件名为test.rdb 修改配置文件 save 5 1 dbfilename test.rdb添加一条数据 结果显示 2.3 AOF持久化 使用方法 使用AOF可以禁用RDB方法是修改配置文件 save bgrewriteaof命令命令压缩 2.4 RDB和AOF对比 三、Redis主从 3.1 搭建Redis主从架构 3.1.1 集群结构 我们搭建的主从集群结构如图 共包含三个节点一个主节点两个从节点。 这里我们会在同一台虚拟机中开启3个redis实例模拟主从集群信息如下 IPPORT角色192.168.150.1017001master192.168.150.1017002slave192.168.150.1017003slave 3.1.2 准备实例和配置 注意服务器要打开7001 7002 7003 端口 要在同一台虚拟机开启3个实例必须准备三份不同的配置文件和目录配置文件所在目录也就是工作目录。 1创建目录 我们创建三个文件夹名字分别叫7001、7002、7003 # 进入/tmp目录 cd /tmp # 创建目录 mkdir 7001 7002 7003如图 2恢复原始配置 修改redis-6.2.4/redis.conf文件将其中的持久化模式改为默认的RDB模式AOF保持关闭状态。 # 开启RDB # save save 3600 1 save 300 100 save 60 10000# 关闭AOF appendonly no3拷贝配置文件到每个实例目录 然后将redis-6.2.4/redis.conf文件拷贝到三个目录中在/tmp目录执行下列命令 # 方式一逐个拷贝 cp redis-6.2.4/redis.conf 7001 cp redis-6.2.4/redis.conf 7002 cp redis-6.2.4/redis.conf 7003 # 方式二管道组合命令一键拷贝 echo 7001 7002 7003 | xargs -t -n 1 cp redis-6.2.4/redis.conf4修改每个实例的端口、工作目录 修改每个文件夹内的配置文件将端口分别修改为7001、7002、7003将rdb文件保存位置都修改为自己所在目录在/tmp目录执行下列命令 sed -i -e s/6379/7001/g -e s/dir .\//dir \/tmp\/7001\//g 7001/redis.conf sed -i -e s/6379/7002/g -e s/dir .\//dir \/tmp\/7002\//g 7002/redis.conf sed -i -e s/6379/7003/g -e s/dir .\//dir \/tmp\/7003\//g 7003/redis.conf5修改每个实例的声明IP 虚拟机本身有多个IP为了避免将来混乱我们需要在redis.conf文件中指定每一个实例的绑定ip信息格式如下【注意修改IP】 # redis实例的声明 IP replica-announce-ip 192.168.150.101每个目录都要改我们一键完成修改在/tmp目录执行下列命令 # 逐一执行 sed -i 1a replica-announce-ip 192.168.150.101 7001/redis.conf sed -i 1a replica-announce-ip 192.168.150.101 7002/redis.conf sed -i 1a replica-announce-ip 192.168.150.101 7003/redis.conf# 或者一键修改 printf %s\n 7001 7002 7003 | xargs -I{} -t sed -i 1a replica-announce-ip 192.168.150.101 {}/redis.conf3.1.3 启动 为了方便查看日志我们打开3个ssh窗口分别启动3个redis实例启动命令 # 第1个 redis-server 7001/redis.conf # 第2个 redis-server 7002/redis.conf # 第3个 redis-server 7003/redis.conf启动后 如果要一键停止可以运行下面命令 printf %s\n 7001 7002 7003 | xargs -I{} -t redis-cli -p {} shutdown3.1.4 开启主从关系 现在三个实例还没有任何关系要配置主从可以使用replicaof 或者slaveof5.0以前命令。 有临时和永久两种模式 修改配置文件永久生效 在redis.conf中添加一行配置slaveof masterip masterport 使用redis-cli客户端连接到redis服务执行slaveof命令重启后失效 slaveof masterip masterport注意在5.0以后新增命令replicaof与salveof效果一致。 这里我们为了演示方便使用方式二。 通过redis-cli命令连接7002执行下面命令【注意修改IP】 # 连接 7002 redis-cli -p 7002 # 执行slaveof slaveof 192.168.150.101 7001通过redis-cli命令连接7003执行下面命令【注意修改IP】 # 连接 7003 redis-cli -p 7003 # 执行slaveof slaveof 192.168.150.101 7001然后连接 7001节点查看集群状态 # 连接 7001 redis-cli -p 7001 # 查看状态 info replication结果 3.1.5 测试 执行下列操作以测试 利用redis-cli连接7001执行set num 123 利用redis-cli连接7002执行get num再执行set num 666 利用redis-cli连接7003执行get num再执行set num 888 可以发现只有在7001这个master节点上可以执行写操作7002和7003这两个slave节点只能执行读操作。 3.2 数据同步 3.2.1 全量同步【建立连接时】 master如何判断slave是不是来做数据同步首先要了解以下两个概念 过程如下 slave向master发送偏移量master判断请求的repid是否一致不一致表示二者第一次连接然后master将自己的repid和offset发送给slave 3.2.2 增量同步【slave从节点重启后】 3.2.3 数据同步的优化 3.2.4 总结 四、Redis哨兵【Sentinel实现哨兵故障转移】 4.1 哨兵的作用和原理 slave节点宕机恢复后可以找master节点同步数据那master节点宕机怎么办? 一、服务状态监控 Sentinel基于心跳机制监测服务状态每隔1秒向集群的每个实例发送ping命令 主观下线:如果某sentinel节点发现某实例未在规定时间响应则认为该实例主观下线。客观下线:若超过指定数量(quorum)的sentinel都认为该实例主观下线则该实例客观下线。quorum值最好超过Sentinel实例数量的一半。 二、选举master 一旦发现master故障sentinel需要在salve中选择一个作为新的master选择依据是这样的: 首先会判断slave节点与master节点断开时间长短如果超过指定值(down-after-miliseconds*10)则会排除该slave节点然后判断slave节点的slave-priority值越小优先级越高如果是0则永不参与选举如果slave-prority一样则判断slave节点的offset值越大说明数据越新优先级越高最后是判断slave节点的运行id大小越小优先级越高。 三、如何实现故障转移 4.2 搭建哨兵集群 4.2.1 集群结构 这里我们搭建一个三节点形成的Sentinel集群来监管之前的Redis主从集群。如图 三个sentinel实例信息如下 节点IPPORTs1192.168.150.10127001s2192.168.150.10127002s3192.168.150.10127003 4.2.2 准备实例和配置 注意服务器要打开7001 7002 7003 27001 27002 27003端口 要在同一台虚拟机开启3个实例必须准备三份不同的配置文件和目录配置文件所在目录也就是工作目录。 我们创建三个文件夹名字分别叫s1、s2、s3 # 进入/tmp目录 cd /tmp # 创建目录 mkdir s1 s2 s3如图 然后我们在s1目录创建一个sentinel.conf文件命令vi s1/sentinel.conf添加下面的内容【注意修改IP】 port 27001 sentinel announce-ip 192.168.150.101 sentinel monitor mymaster 192.168.150.101 7001 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 60000 dir /tmp/s1解读 port 27001是当前sentinel实例的端口sentinel monitor mymaster 192.168.150.101 7001 2指定主节点信息 mymaster主节点名称自定义任意写192.168.150.101 7001主节点的ip和端口2选举master时的quorum值 然后将s1/sentinel.conf文件拷贝到s2、s3两个目录中在/tmp目录执行下列命令 # 方式一逐个拷贝 cp s1/sentinel.conf s2 cp s1/sentinel.conf s3 # 方式二管道组合命令一键拷贝 echo s2 s3 | xargs -t -n 1 cp s1/sentinel.conf修改s2、s3两个文件夹内的配置文件将端口分别修改为27002、27003工作目录修改成s2、s3 sed -i -e s/27001/27002/g -e s/s1/s2/g s2/sentinel.conf sed -i -e s/27001/27003/g -e s/s1/s3/g s3/sentinel.conf4.2.3 启动 为了方便查看日志我们打开3个ssh窗口分别启动3个redis实例启动命令 # 第1个 redis-sentinel s1/sentinel.conf # 第2个 redis-sentinel s2/sentinel.conf # 第3个 redis-sentinel s3/sentinel.conf# 一键停止三个redis-sentinel printf %s\n 27001 27002 27003 | xargs -I{} -t redis-cli -p {} shutdown# 也可以一个一个的停止redis-sentinel redis-cli -p 27001 shutdown redis-cli -p 27002 shutdown redis-cli -p 27003 shutdown启动后 4.2.4 测试 尝试让master节点7001宕机查看sentinel日志 查看27001的日志 4.3 RedisTemplate的哨兵模式 在pom文件中引入redis依赖 !--redis依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency在yml文件中配置指定sentinel【哨兵】相关信息 spring:redis:sentinel:master: mymaster # 指定master名称nodes: # 指定redis-sentinel集群【哨兵】名称- 39.107.236.163:27001- 39.107.236.163:27002- 39.107.236.163:27003配置主从分离 启动服务测试插入一条数据 五、Redis分片集群 5.1 搭建分片集群 5.1.1 集群结构 分片集群需要的节点数量较多这里我们搭建一个最小的分片集群包含3个master节点每个master包含一个slave节点结构如下 这里我们会在同一台虚拟机中开启6个redis实例模拟分片集群信息如下 IPPORT角色192.168.150.1017001master192.168.150.1017002master192.168.150.1017003master192.168.150.1018001slave192.168.150.1018002slave192.168.150.1018003slave 5.1.2 准备实例和配置 注意服务器要打开7001 7002 7003 8001 8002 8003 27001 27002 27003 28001 28002 28003 端口 首先关闭之前的主从redis和哨兵 # 关闭哨兵 printf %s\n 27001 27002 27003 | xar -t redis-cli -p {} shutdown # 关闭redis主从节点 printf %s\n 7001 7002 7003 | xargs redis-cli -p {} shutdown删除之前的7001、7002、7003这几个目录重新创建出7001、7002、7003、8001、8002、8003目录 # 进入/tmp目录 cd /tmp # 删除旧的避免配置干扰 rm -rf 7001 7002 7003 # 创建目录 mkdir 7001 7002 7003 8001 8002 8003在/tmp下准备一个新的redis.conf文件vi redis.conf内容如下 port 6379 # 开启集群功能 cluster-enabled yes # 集群的配置文件名称不需要我们创建由redis自己维护 cluster-config-file /tmp/6379/nodes.conf # 节点心跳失败的超时时间 cluster-node-timeout 5000 # 持久化文件存放目录 dir /tmp/6379 # 绑定地址 bind 0.0.0.0 # 让redis后台运行 daemonize yes # 注册的实例ip replica-announce-ip 192.168.150.101 # 保护模式 protected-mode no # 数据库数量 databases 1 # 日志 logfile /tmp/6379/run.log将这个文件拷贝到每个目录下 # 进入/tmp目录 cd /tmp # 执行拷贝 echo 7001 7002 7003 8001 8002 8003 | xargs -t -n 1 cp redis.conf修改每个目录下的redis.conf将其中的6379修改为与所在目录一致 # 进入/tmp目录 cd /tmp # 修改配置文件 printf %s\n 7001 7002 7003 8001 8002 8003 | xargs -I{} -t sed -i s/6379/{}/g {}/redis.conf5.1.3 启动 一定要注意如果是使用云服务器一定要打开 17007 17002 17003 18001 18002 18003 端口 因为已经配置了后台启动模式所以可以直接启动服务 # 进入/tmp目录 cd /tmp # 一键启动所有服务 printf %s\n 7001 7002 7003 8001 8002 8003 | xargs -I{} -t redis-server {}/redis.conf通过ps查看状态 ps -ef | grep redis发现服务都已经正常启动 如果要关闭所有进程可以执行命令 ps -ef | grep redis | awk {print $2} | xargs kill或者推荐这种方式 printf %s\n 7001 7002 7003 8001 8002 8003 | xargs -I{} -t redis-cli -p {} shutdown或者还不行的话 kill -9 上面截图root后面那一串数字5.1.4 创建集群 虽然服务启动了但是目前每个服务之间都是独立的没有任何关联。 我们需要执行命令来创建集群在Redis5.0之前创建集群比较麻烦5.0之后集群管理命令都集成到了redis-cli中。 1Redis5.0之前 Redis5.0之前集群命令都是用redis安装包下的src/redis-trib.rb来实现的。因为redis-trib.rb是有ruby语言编写的所以需要安装ruby环境。 # 安装依赖 yum -y install zlib ruby rubygems gem install redis然后通过命令来管理集群 # 进入redis的src目录 cd /tmp/redis-6.2.4/src # 创建集群 ./redis-trib.rb create --replicas 1 192.168.150.101:7001 192.168.150.101:7002 192.168.150.101:7003 192.168.150.101:8001 192.168.150.101:8002 192.168.150.101:80032Redis5.0以后 我们使用的是Redis6.2.4版本集群管理以及集成到了redis-cli中格式如下 redis-cli --cluster create --cluster-replicas 1 192.168.150.101:7001 192.168.150.101:7002 192.168.150.101:7003 192.168.150.101:8001 192.168.150.101:8002 192.168.150.101:8003命令说明 redis-cli --cluster或者./redis-trib.rb代表集群操作命令create代表是创建集群--replicas 1或者--cluster-replicas 1 指定集群中每个master的副本个数为1此时节点总数 ÷ (replicas 1) 得到的就是master的数量。因此节点列表中的前n个就是master其它节点都是slave节点随机分配到不同master 运行后的样子 这里输入yes则集群开始创建 通过命令可以查看集群状态 redis-cli -p 7001 cluster nodes5.1.5 测试 尝试连接7001节点存储一个数据 # 连接 redis-cli -p 7001 # 存储数据 set num 123 # 读取数据 get num # 再次存储 set a 1结果悲剧了 集群操作时需要给redis-cli加上-c参数才可以 redis-cli -c -p 7001这次可以了 5.2 散列插槽 redis会将数据绑定到插槽将插槽平均分给上述7001 7002 7003 三个主节点中下面演示 那么我们如何控制同一类数据在一个redis节点中假设我们想将a与num放在同一个redis下那么你在设置num时如下修改即可 总结 5.3 集群伸缩【添加、删除Redis节点】 5.3.1 添加节点 操作如下 # 记得要放开7004和17004端口 # 创建目录7004 mkdir 7004 cp redis.conf 7004 sed -i s/6379/7004/g 7004/redis.conf # 启动服务 redis-server 7004 redis.conf # 查看状态 ps -ef | grep redis # 将7004加入到集群中 redis-cli --cluster add-node 192.168.150.101:7004 192.168.150.101:7001 # 查看集群状态 redis-cli -p 7001 cluster nodes可见7004加入到集群中且为一个master主节点但是还没有插槽 这里将7001的0-3000号插槽分配给7004 # 将7001的插槽重新分片 redis-cli --cluster reshard 192.168.150.101:7001查看状态可以看到0-3000已经分配给7004了 5.3.2 删除节点 # 1.将0-3000号插槽还给7001步骤类似于上面,这里不演示了# 2.查看帮助文档 redis-cli --cluster help # 3.获取7004的ID redis-cli -p 7001 cluster nodes # 4.删除节点 redis-cli --cluster del-node 要删除节点的IP端口 要删除节点的ID5.4 故障转移 分片集群虽然没有哨兵但是也可以实现故障转移 5.4.1 自动故障转移 # 动态查看7001状态 watch redis-cli -p 7001 cluster nodes # 使7002宕机 redis-server 7002/redis.conf下图可以看到7002宕机后自动使8001成为master主节点 5.4.2 手动故障转移 案例操作7002使其回复称master主节点 [rootiZ2ze1r1nnqykr8zfme6cjZ tmp]# redis-cli -p 7002 127.0.0.1:7002 cluster failover OK5.5 RedisTemplate访问分片集群 当访问http://localhost:8080/get/num时查看日志信息访问的是8002从节点隶属于7001主节点从节点执行读操作 当访问http://localhost:8080/set/num/123时查看日志信息访问的是7001主节点从而实现读写分离主节点执行写操作 当访问http://localhost:8080/set/a/123时查看日志信息访问的是7003主节点表明不同数据有不同的插槽
http://www.hkea.cn/news/14546498/

相关文章:

  • 旅游网网站建设的管理免费24小时在线心理医生
  • 普洱做网站的报价地方门户网站建站流程
  • 做网站一定要注册域名吗沈阳网络推广
  • 本地南昌网站建设公司织梦网站怎么做伪静态
  • 谷歌做网站推广购物网站开发设计文档
  • 河北建设厅网站学生简单个人主页模板
  • 如皋电子商城网站建设品牌宝正式推出免费个人网站认证
  • 互联网网站模块商标注册号查询入口官网
  • 专业专题网站建设做内贸注册什么网站
  • 我爱深圳网站设计网页制作有什么软件
  • 建站用wordpress好吗wordpress改变底部logo
  • 做网站要有数据库么翼城网站建设
  • 温州平阳县企业网站搭建推荐网站构建工具
  • 云主机放多个网站做网站得多长时间
  • 黄岩网站制作张家港网站设计建设
  • 美食网站开发的背景新公司注册工商核名系统
  • 淘宝网站建设服务类目选择网页开发的流程
  • 网站建设 中企动力扬州注册公司地址可以是住宅吗
  • 中国建设官方网站登录接做室内效果图的网站
  • python做网站好处网页设计介绍说明
  • 个人网站 备案备注app企业网站模板免费下载
  • 如何在网站做电子报最新73种暴利产品竞价单页网站制作带订单后台系统模板
  • 网站建设seo策略做婚礼效果图的网站有哪些
  • 公司网站建设工作室wordpress加载动画插
  • 网站建设模板ppt模板code网站免费
  • 已认证网站服务费怎么做网站如何做关键字收录
  • 郑州网站开发顾问医院网站建设课程代码
  • 长治专业做网站网站开发追款单
  • 最好的设计师平台网站wordpress 上传到域名
  • 网站框架怎么做的企业宣传ppt范文