A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小刀葛小伦 于 2019-1-18 09:21 编辑

1.如何保证redismysql数据库数据一致性问题?
第一种解决方案:
具体的步骤就是:①先删除缓存里的数据,②在写入数据库,③线程休眠,④再次删除缓存
一:休眠时间根据项目读取数据业务的耗时,这么做的目的,就是确保读请求结束,写请求可以删除读请求造成的缓存脏数据。这么做的目的,就是确保读请求结束,写请求可以删除读请求造成的缓存脏数据。
二:从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。所有的写操作以数据库为准,只要到达缓存过期时间,则后面的读请求自然会从数据库中读取新值然后回填缓存。
以上只是为一种解决方案。
第二种解决方案:
通过MySQL binlog增量订阅消费+消息队列+增量数据更新到redis
①;Redis:热数据基本都在Redis,②:MySQL:增删改都是操作MySQL③:更新Redis数据:MySQ的数据操作binlog,来更新到Redis
二:Redis更新
一个是全量(将全部数据一次写入到redis)一个是增量(实时更新)增量,指的是mysql的update、insert、delate变更数据 ③读取binlog后分析 ,利用消息队列,推送更新各台的redis缓存数据。这样一旦MySQL中产生了新的写入、更新、删除等操作,就可以把binlog相关的消息推送至Redis,Redis再根据binlog中的记录,对Redis进行更新其实这种机制,很类似MySQL的主从备份机制,因为MySQL的主备也是通过binlog来实现的数据一致性。
这里可以结合使用canal(阿里的一款开源框架),通过该框架可以对MySQL的binlog进行订阅,而canal正是模仿了mysql的slave数据库的备份请求,使得Redis的数据更新达到了相同的效果
2.Redis的高可用详解:Redis哨兵、复制、集群的设计原理,以及区别(Redis高可用方案):如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制
哨兵(Sentinel):可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能.
复制(Replication):则是负责让一个Redis服务器可以配备多个备份的服务器。

哨兵(Sentinel)
哨兵是Redis集群架构中非常重要的一个组件,哨兵的出现主要是解决了主从复制出现故障时需要人为干预的问题。
1.Redis哨兵主要功能
1)集群监控:负责监控Redis masterslave进程是否正常工作
2)消息通知:如果某个Redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员
3)故障转移:如果master node挂掉了,会自动转移到slave node
4)配置中心:如果故障转移发生了,通知client客户端新的master地址
2.Redis哨兵高可用
原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性
·  哨兵机制建立了多个哨兵节点(进程),共同监控数据节点的运行状况。
·  同时哨兵节点之间也互相通信,交换对主从节点的监控状况。
·  每隔1秒每个哨兵会向整个集群:Master主服务器+Slave从服务器+其他Sentinel(哨兵)进程,发送一次ping命令做一次心跳检测
Redis 复制(Replication)
Redis为了解决单点数据库问题,会把数据复制多个副本部署到其他节点上,通过复制,实现Redis的高可用性,实现对数据的冗余备份,保证数据和服务的高度可靠性。
从数据库向主数据库发送sync(数据同步)命令。
主数据库接收同步命令后,会保存快照,创建一个RDB文件。
当主数据库执行完保持快照后,会向从数据库发送RDB文件,而从数据库会接收并载入该文件。
主数据库将缓冲区的所有写命令发给从服务器执行。
以上处理完之后,之后主数据库每执行一个写命令,都会将被执行的写命令发送给从数据库。
[size=12.0000pt]1. Redis 主从复制、哨兵和集群这三个有什么区别
1.主从模式:读写分离,备份,一个Master可以有多个Slaves
2.哨兵sentinel:监控,自动转移,哨兵发现主服务器挂了后,就会从slave中重新选举一个主服务器。
3.集群:为了解决单机Redis容量有限的问题,将数据按一定的规则分配到多台机器,内存/QPS不受限于单机,可受益于分布式集群高扩展性。
4.Redis常见性能问题和解决方案?
(1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件
(2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次
(3) 为了主从复制的速度和连接的稳定性,MasterSlave最好在同一个局域网内
(4) 尽量避免在压力很大的主库上增加从库
(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3…

3 个回复

正序浏览
虽然不是很明白什么意思但是感觉很不错,支持。
回复 使用道具 举报
果断收藏了,哈哈
回复 使用道具 举报
稳啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马