iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >redis笔记-
  • 953
分享到

redis笔记-

redis笔记- 2021-09-21 10:09:22 953人浏览 绘本
摘要

前言 为了避免单点故障,我们需要将数据复制多份部署在多台不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务 作用: 数据备份 扩展读性能(读写分离) 复制方式: 全量复制 部分复制   实现方式   1、一主二

redis笔记-

前言

为了避免单点故障,我们需要将数据复制多份部署在多台不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务

作用:

数据备份

扩展读性能(读写分离)

复制方式

全量复制

部分复制

 

实现方式

 

1、一主二扑 ABC) 一个Master两个Slave

2、薪火相传(去中心化) A-B-CB既是主节点(C的主节点),又是从节点(A的从节点)

3、反客为主(主节点down掉后,手动操作升级从节点为主节点)

4、哨兵模式(后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库)

 

一主多从

 

 

 配置:

Master:6379端口
requirepass 123456

slave1:  6380端口
port 6380
slaveof 127.0.0.1 6379
masterauth 123456

Slave2:  6381端口
port 6381
slaveof 127.0.0.1 6379
masterauth 123456

 

启动

开启Master

Redis-server.exe redis.windows.conf

 

开启slave1

 

 

开启slave2

 

 

查看master

 

 

测试

 

连接三个redis

 

 

 

 

 

 

master写入数据

 

 

 

查看slave1

 

 

 

 

 

 

 

可能出现的问题

启动服务,127.0.0.1java.net.SocketTimeoutException:connect time out超时和ping不通端口
解决:关闭防火墙

 

 

哨兵模式sentinel

哨兵模式的任务:

监控(Monitoring):Sentinel会不断地检查你的主服务器和从服务器是否允许正常。

提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel可以通过api向管理员或者其他应用程序发送通知。

自动故障迁移(Automatic failover:

1)当一个主服务器不能正常工作时,Sentinel会开始一次自动故障迁移操作,他会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器;

2)客户端试图连接失败的主服务器时,集群也会向客服端返回新主服务器的地址,是的集群可以使用新主服务器代替失效服务器

 

新建配置sentinel.conf

三个redis配置只有端口port不一样

#端口区别不同
#当前Sentinel服务运行的端口
port 26379
# 哨兵监听的主服务器 mymaster名称(可以自定义),1票
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel auth-pass mymaster 123456
# 10s内mymaster无响应,则认为master宕机了
sentinel down-after-milliseconds mymaster 10000
#如果20秒后,mysater仍没启动过来,则启动failover
sentinel failover-timeout mymaster 20000
# 执行故障转移时, 最多有1个从服务器同时对新的主服务器进行同步,数字越小, 完成故障转移所需的时间就越长
sentinel parallel-syncs mymaster 1
bind 127.0.0.1
protected-mode yes

 

 

可能出现的问题

redis 主从切换失败

 

[12248] 31 Mar 17:09:26.726 # +try-failover master mymaster 127.0.0.1 6379
[12248] 31 Mar 17:09:26.728 # +vote-for-leader 2fe3a13e25190364c193e71b6d89257323D694ce 11
[12248] 31 Mar 17:09:26.728 # +elected-leader master mymaster 127.0.0.1 6379
[12248] 31 Mar 17:09:26.728 # +failover-state-select-slave master mymaster 127.0.0.1 6379
[12248] 31 Mar 17:09:26.803 # -failover-abort-no-Good-slave master mymaster 127.0.0.1 6379
[12248] 31 Mar 17:09:26.864 # Next failover delay: I will not start a failover before Tue Mar 31 17:10:17 2020
[12248] 31 Mar 17:10:17.170 # +new-epoch 12
[12248] 31 Mar 17:10:17.171 # +try-failover master mymaster 127.0.0.1 6379
[12248] 31 Mar 17:10:17.179 # +vote-for-leader 2fe3a13e25190364c193e71b6d89257323d694ce 12
[12248] 31 Mar 17:10:17.179 # +elected-leader master mymaster 127.0.0.1 6379
[12248] 31 Mar 17:10:17.181 # +failover-state-select-slave master mymaster 127.0.0.1 6379
[12248] 31 Mar 17:10:17.265 # -failover-abort-no-good-slave master mymaster 127.0.0.1 6379
[12248] 31 Mar 17:10:17.349 # Next failover delay: I will not start a failover before Tue Mar 31 17:11:07 2020
[12248] 31 Mar 17:11:07.279 # +new-epoch 13
[12248] 31 Mar 17:11:07.279 # +try-failover master mymaster 127.0.0.1 6379
[12248] 31 Mar 17:11:07.284 # +vote-for-leader 2fe3a13e25190364c193e71b6d89257323d694ce 13
[12248] 31 Mar 17:11:07.285 # +elected-leader master mymaster 127.0.0.1 6379
[12248] 31 Mar 17:11:07.288 # +failover-state-select-slave master mymaster 127.0.0.1 6379
[12248] 31 Mar 17:11:07.351 # -failover-abort-no-good-slave master mymaster 127.0.0.1 6379
[12248] 31 Mar 17:11:07.443 # Next failover delay: I will not start a failover before Tue Mar 31 17:11:57 2020
View Code

 

问题是:配置错误重新配置

 

 

 

分别启动三个哨兵

 

redis-server.exe sentinel.conf --sentinel

 

测试

关闭mster

 

查看

 

 slave2(6381)升为master

重新开启之前的master(6379),这时候master还是之前的slave2(6381)

 

 

 

 

配置源码地址

 

 

常见问题

 

读写分离

复制数据存在延迟(如果从节点发生阻塞)

从节点可能发生故障

 

主从配置不一致

例如maxmemory不一致,可能会造成丢失数据

例如数据结构优化参数不一致:造成主从内存不一致

 

规避全量复制

第一次全量复制不可避免,所以分片的maxmemory减小,同时选择在低峰(夜间)时,做全量复制。

复制积压缓冲区不足

增大复制缓冲区配置rel_backlog_size

例如如果网络中断的平均时间是60s,而主节点平均每秒产生的写命令(特定协议格式)所占的字节数为100KB,则复制积压缓冲区的平均需求为6MB,保险起见,可以设置为12MB,来保证绝大多数断线情况都可以使用部分复制。

 

复制风暴

master节点重启,master节点生成一份rdb文件,但是要给所有从节点发送rdb文件。对cpu,内存,带宽都造成很大的压力

 

 

 

 

参考:https://www.jianshu.com/p/4aa9591c3153

 

您可能感兴趣的文档:

--结束END--

本文标题: redis笔记-

本文链接: https://www.lsjlt.com/news/5250.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么显示表的字段
    如何显示 oracle 表的字段 在 Oracle 数据库中,可以使用 DESC 命令显示表的字段。 语法: DESC table_name 参数: table_name:要显示字段的表...
    99+
    2024-05-14
    oracle
  • oracle怎么看所有的表
    在 oracle 数据库中查看所有表的步骤:连接到数据库运行查询:select table_name from user_tables; 如何使用 Oracle 查看所有表 ...
    99+
    2024-05-14
    oracle
  • oracle怎么显示行数
    如何使用 oracle 显示行数 在 Oracle 数据库中,有两种主要方法可以显示行数: 1. 使用 COUNT 函数 SELECT COUNT(*) FROM table_n...
    99+
    2024-05-14
    oracle
  • oracle怎么显示百分比
    oracle中显示百分比的方法有:使用百分号“%”;使用to_char()函数;使用format()函数(oracle 18c及更高版本);创建自定义函数。 Oracle 显...
    99+
    2024-05-14
    oracle
  • oracle怎么删除列
    oracle 中删除列的方法有两种:1)使用 alter table table_name drop column column_name 语句;2)使用 drop colum...
    99+
    2024-05-14
    oracle
  • sql怎么查看表的索引
    通过查询系统表,可以获取表的索引信息,包括索引名称、是否唯一、索引类型、索引列和行数。常用系统表有:mysql 的 information_schema.statistics、postg...
    99+
    2024-05-14
    mysql oracle
  • sql怎么查看索引
    您可以使用 sql 通过以下方法查看索引:show indexes 语句:显示表中定义的索引列表及其信息。explain 语句:显示查询计划,其中包含用于执行查询的索引。informat...
    99+
    2024-05-14
  • sql怎么查看存储过程
    如何查看 sql 存储过程的源代码:使用 show create procedure 语句直接获取创建脚本。查询 information_schema.routines 表的 routi...
    99+
    2024-05-14
  • sql怎么查看视图表
    要查看视图表,可以使用以下步骤:使用 select 语句获取视图中的数据。使用 desc 语句查看视图的架构。使用 explain 语句分析视图的执行计划。使用 dbms 提供...
    99+
    2024-05-14
    oracle python
  • sql怎么查看创建的视图
    可以通过sql查询查看已创建的视图,具体步骤包括:连接到数据库并执行查询select * from information_schema.views;查询结果将显示视图的名称、...
    99+
    2024-05-14
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作