主从复制、读写分离、集群、为什么要使用Redis数据库[通俗易懂]

主从复制、读写分离、集群、为什么要使用Redis数据库[通俗易懂]一、什么是主从复制、读写分离、为什么要使用主从复制:是一种数据备份的方案。简单来说,是使用两个或两个以上相同的数据库,将一个数据库当做主数据库,而另一个数据库当做从数据库。在主数据库中进行相应操作时,从数据库记录下所有主数据库的操作,使其二者一模一样。读写分离:是一种让数据库更稳定的的使用数据库的方法。是在有从数据库的情况下使用,当主数据库进行对数据的增删改也就是写操作时,将查询的…

大家好,又见面了,我是你们的朋友全栈君。

一、什么是主从复制、读写分离、为什么要使用

主从复制:是一种数据备份的方案。

简单来说,是使用两个或两个以上相同的数据库,将一个数据库当做主数据库,而另一个数据库当做从数据库。主数据库中进行相应操作时,从数据库记录下所有主数据库的操作,使其二者一模一样。

读写分离:是一种让数据库更稳定的的使用数据库的方法。

是在有从数据库的情况下使用,当主数据库进行对数据的增删改也就是写操作时,将查询的任务交给从数据库

为什么要使用主从分离和读写操作呢?

主从复制:1、当主数据库出现问题时,可以当从数据库代替主数据库,可以避免数据的丢失。

     2、可以进行读写分离

读写分离:1、避免从数据库进行写操作而导致的主从数据库数据不一致的情况,因为当主从数据库数据不一致时,那么从数据库最主要的备份任务就没有意义了。 

        2、减轻主数据库的压力。因为进行写操作更耗时,所以如果不进行读写分离的话,写操作将会影响到读操作的效率。

二、什么是集群

如果说主从复制是各司其职的话,那么集群就是一群同样的个体做着同样的事情。在Redis中,数据的写入操作次数很大的情况下,只使用单独一个服务器来进行写入操作的话,效率不高,那么如果使用集群方案,利用多个Redis服务器来进行写操作,大量的数据,你写一点,我写一点,大家都分担一点,那么效率会高很多。就像一小块土地需要挖土,那么一台挖掘机就足够,但是遇上了一大片土地,虽然一台挖掘机也能够完成任务,但是需要很久很久,那么我现在再找个十台挖掘机一起挖土,那么效率就会高很多了。

集群模式的思想可以在多处使用。总之就是,一个个体完成不了或者说效率很低的场景下,都可以使用这种思想。
就如下面将要说到的哨兵,一个哨兵监视一个服务器集群肯定是不够的,那么就需要一个哨兵集群来监视。

三、什么是哨兵模式

是一种容灾方案。

哨兵:实则是一个在特殊模式下的Redis服务器,里面存储的是自己本身的信息,主服务器的信息,从服务器的信息。

用一个或者多个哨兵来监视主服务器(也就是进行写操作的服务器)是否在正常执行任务,一旦哨兵发现主服务器不可用时,就找到一个合适的从服务器成为主服务器。

四、为什么要用Redis数据库

Redis数据库是NOSQL数据库中以key-value存储模式下的一种数据库。

那么NOSQL又是什么数据库呢?非关系型数据库。

什么要使用Nosql? 
1) 当数据量的总大小一个机器放不下时。 
2) 数据索引一个机器的内存放不下时。 
3) 访问量(读写混合)一个实例放不下时。

在信息爆炸的今天,数据的存储,对数据的查询都是非常频繁且非常大量的。关系型数据库的就显得力不从心了,扩展性较差,查询简单条件数据的效率较低等缺点,无意是致命的。而NOSQL数据库中的数据之间并无关系,这一特点造就了NOSQL的易扩展性,读写性能高等优势。所以面对大量的数据读写,非关系型数据库相比较于关系型数据库有着巨大的优势。

那么Redis数据库为什么又在NOSQL中脱颖而出?

我认为是有以下几个原因,

1、Redis支持多种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。可以在大部分的场景中使用。

2、支持主从复制,读写分离。读写效率大大提升。

3、数据存储在内存中,可用来做缓存。需要持久化的数据就将其存入硬盘,不需要持久化的数据,可以进行短暂的存储,提高访问速度。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147134.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月13日 下午10:46
下一篇 2022年6月13日 下午11:00


相关推荐

  • vue 获取当前路由地址

    vue 获取当前路由地址vue 获取当前路由地址 1 router 和 route 的区别 router 路由操作对象 只写 需要对路由进行操作时使用 如路由跳转 route 路由信息对象 只读 获取路由相关信息时使用 如获取当前路由地址 2 获取当前路由地址 this route path 原生方法 window location href3 获取路由参数 query params 传参 query 传参时 路由跳转 this router push name name query id

    2026年3月19日
    2
  • MySql必知必会内容导图

    MySql必知必会思维导图1.DBMS分类(1)关系数据库系统(2)面向对象的数据库系统(3)对象关系数据库系统对象关系数据库系统是在传统的关系数据模型基础上提供元祖,数据,集合等更为丰富

    2021年12月28日
    51
  • Codeforces 414B

    Codeforces 414B题目链接

    2022年5月11日
    47
  • 详解布隆过滤器的原理和实现「建议收藏」

    详解布隆过滤器的原理和实现「建议收藏」为什么需要布隆过滤器想象一下遇到下面的场景你会如何处理: 手机号是否重复注册 用户是否参与过某秒杀活动 伪造请求大量id查询不存在的记录,此时缓存未命中,如何避免缓存穿透 针对以上问题常规做法是:查询数据库,数据库硬扛,如果压力并不大可以使用此方法,保持简单即可。改进做法:用list/set/tree维护一个元素集合,判断元素是否在集合内,时间复杂度或空间复杂度会比较高。如果是微服务的话可以用redis中的list/set数据结构,数据规模非常大此方案

    2022年10月6日
    4
  • 编写程序计算1~10的平方和_用指针比较两个数大小

    编写程序计算1~10的平方和_用指针比较两个数大小给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。示例 1:输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5示例 2:输入:c = 3输出:false示例 3:输入:c = 4输出:true示例 4:输入:c = 2输出:true示例 5:输入:c = 1输出:true提示:0 <= c <= 231 – 1题解双指针,注意整形溢出class Solution {public

    2022年8月9日
    14
  • 关于OpenClaw,你需要了解的:核心架构、运作原理、Agent部署步骤、精细化管控和安全风险

    关于OpenClaw,你需要了解的:核心架构、运作原理、Agent部署步骤、精细化管控和安全风险

    2026年3月13日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号