主从复制、读写分离、集群、为什么要使用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言 整数与字符串的相互转换

    C语言 整数与字符串的相互转换C语言整数与字符串的相互转换一、简述C语言中整数与字符串的相互转换,有广泛应用的拓展函数(非标准库),也可以自己尝试简单的实现。二、整数转字符串1、拓展函数itoaitoa(表示integertoalphanumeric)是把整型数转换成字符串的一个函数。windows环境下,在<stdlib.h>头文件中有c…

    2022年6月6日
    44
  • Day5- php 特殊类型 资源 NULL

    Day5- php 特殊类型 资源 NULL

    2021年9月15日
    50
  • ip地址的组成(网络位+主机位)

    ip地址的组成(网络位+主机位)IP地址采用分层结构;IP地址是由网络号(netID)与主机号(hostID)两部分组成的。根据不同的取值范围,IP地址可以分为五类;IP地址中的前5位用于标识IP地址的类别:实际大多通过子

    2022年8月5日
    5
  • selenium3.0不用代理的情况下,获取异步请求的数据

    selenium3.0不用代理的情况下,获取异步请求的数据最近爬取一个网站的时候,反爬比较厉害,各种弹窗,各种验证码,无限debugger,关键数据是ajax请求异步加载的。使用代理绕过前面几种反爬后,获取ajax的request和response成了头疼的问题,最终使用selenium的network日志分析来解决。为了方便以后使用,写了一个工具类:importjsonfromseleniumimportwebdriverfromselenium.webdriverimportDesiredCapabilitiesdefget

    2022年7月26日
    5
  • jedis和jediscluster_java coroutine

    jedis和jediscluster_java coroutine1.JedisCluster类结构JedisCluster是针对RedisCluster的java客户端,它封装了java访问redis集群的各种操作,包括初始化连接、请求重定向等。我们先来看下JedisCluster的类结构:jedisCluster.pngJedisCluster初始化时,所有的集群连接信息都是封装在JedisClusterInfoCache里,由于jedis本身不是线程安全…

    2022年10月15日
    0
  • Mustache 使用心得总结

    Mustache 使用心得总结

    2021年12月15日
    41

发表回复

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

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