rediscas redis如何运用cap理论

redis是属于cap中的哪一种rdb是redis的一种持久化方式 , 是在指定的时间对一定数量的key进行操作(不包括查)后系统会将据集快照写入磁盘,需要数据恢复时直接读取快照文件 。Redis lists基于Linked Lists实现 。
Redis数据库是NoSQL是一种,在分布式数据库的CAP原理中 , Redis满足强一致性和高可用性,强一致性就是要保证数据的质量,高可用性即稳定性,本文简单介绍了非关系型数据库是什么、能干嘛 , 与关系型数据库的区别 。
本文基于对redis、zookpeer、rocketmq、elasticsearch学习总结,对于分布式系统学习,一定绕不开一个点 , 那就是CAP定理 。什么是CAP定理,我这里简单的复制摘抄一下百度上的文案 。
数据多的时候为什么要使用redis而不用mysql?通常来说,当数据多、并发量大的时候 , 架构中可以引入Redis,帮助提升架构的整体性能,减少Mysql(或其他数据库)的压力 , 但不是使用Redis,就不用MySQL 。
【rediscas redis如何运用cap理论】redis可以作为存储的扩展部分,但是不能直接替换掉mysql 。redis对事务的支持还是比较简单的 。但是redis的性能和扩展性比较好,使用起来比较方便 。不会的 。只能是一种互补 。
那么为什么要使用类似redis这样的Nosql数据库呢?1) 当数据量的总大小一个机器放不下时;2) 数据索引一个机器的内存放不下时;3) 访问量(读写混合)一个实例放不下时 。
分布式系统一致性高可用的解决方案总结1、异步复制:使用数据复制的异步机制可以提高系统的可用性和性能 。数据更改可以被快速接受和处理,而副本的一致性会在后台异步更新 。两阶段提交(2PC):2PC是一种常见的协议,用于在分布式系统中实现数据一致性 。
2、要保证多个系统间数据一致,乍一看,必须要引入分布式事务框架才能解决 。但引入非常重的类似二阶段提交分布式事务框架会带来复杂性的急剧上升;在电商领域,绝对的强一致是过于理想化的 , 我们可以选择准实时的最终一致性 。
3、在第二种方案的基础上,我们先解决订单的重复支付行为 , 我们需要在支付系统上对订单号进行控制,一笔订单如果已经支付成功 , 不能在进行支付 。返回重复支付标识 。那么订单系统根据返回的标识,更新订单状态 。
4、故障隔离 故障隔离的目的是,对故障组件进行隔离,以避免其影响系统中的其他组件,尽可能保证分布式系统的可用性 。
5、为了解决这个问题,MongoDB采用的是混合逻辑时钟(HLC)来解决的,HLC不止解决乱序和空洞问题,同时也是用来解决分布式系统上事务一致性的方案 。
redis主从复制最好采用哪种结构为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步 。下图为级联结构 。
Redis中为了实现高可用(High Availability,简称HA),采用了如下两个方式:Redis中主从节点复制数据有全量复制和部分复制之分 。
演示集群采用1主2从,采用伪集群,在一台虚拟机中启动,端口暂定6386386383,集群结构可以选择下面2种,因为数量较少,此次采用普通样式 。
利用主从复制 , 可以实现读写分离、数据备份等功能 。但如果主库宕机后,需要运维人员手动地将一个从库提升为新主库,并将其他从库slaveof新主库,以此来实现故障恢复 。
redis主从复制集群 实现方式:选择一台redis服务器作为master节点(负责写操作),另外一台或多台服务器作为slave节点(负责读操作),slave节点上的数据完全由master节点同步过来 。
Redis主从复制的注意事项 Redis主从复制需要注意以下事项:1 数据同步延迟 Redis主从复制会出现数据同步延迟的情况,因此需要配置Redis Sentinel监控系统来监测数据同步情况 。
(一)Redis-NoSql是什么、能干嘛,与关系型数据库的区别1、NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充 。随着互联网web0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速 。
2、数据库应用场景不同:Redis主要用于缓存、队列、计数器等,而关系型数据库主要用于存储关系型数据 。数据库的处理方式不同:Redis可以对数据进行持久化,包括RDB快照和AOF日志两种方式,保证数据不丢失 。
3、在NoSQL中,数据可以在任何时候任何地方添加,不需要先定义表 。c. SQL中如果需要增加外部关联数据的话,规范化做法是在原表中增加一个外键,关联外部数据表 。
4、mysql是关系型数据库,主要用于存放持久化数据 , 将数据存储在硬盘中,读取速度较慢 。redis是NOSQL , 即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限 。
Redis怎么实现分布式锁1、如果没有其他线程占用,则就可以通过添加分布式锁来占用这个资源,然后再执行后续的任务,在任务执行完成之后 , 再释放分布式锁,其他线程就可以继续使用这个资源了 。
2、但是如果在分布式环境下,要保证多个线程同时只有1个能访问某个资源,就需要用到分布式锁 。这里我们将介绍用Redis的 setnx 命令来实现分布式锁 。
3、使用分布式锁要满足的几个条件:系统是一个分布式系统(关键是分布式,单机的可以使用ReentrantLock或者synchronized代码块来实现)共享资源(各个系统访问同一个资源,资源的载体可能是传统关系型数据库或者NoSQL) 。
4、我们今天就来实现用 Redis 来实现分布式锁,并且要学会怎么使用 。准备使用 Jedis 的 jar 包 , 在项目中导入 jar 包 。

    推荐阅读