首页 > 数据库 >Redis数据库高可用

Redis数据库高可用

时间:2023-03-31 12:34:53浏览次数:24  
标签:持久 可用 数据库 Redis 保存 RDB 数据

一、Redis高可用

在web服务器中,高可用是指服务器可以正常访问的时问,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99% 99.998等等)。
但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、快速容灾技术),还需要考虑数据容量的扩展、数据安全不会丢失等。
在Redis中,实现高可用的技术主要包括持久化、主从复制、哨兵和cluster集群,下面分别说明它们的作用,以及解决了什么样的问题。

  • 主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的,综上说书及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。

  • 哨兵:在主从复制的基础上,哨兵实现了自动化的故障恢复。缺陷:写操作无法负载均衡;存储能力受到单机的限制。

  • 集群:通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。

  • 持久化:持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。

二、Redis持久化

1. 持久化功能

Redis是内存数据库,所有数据都是保存在内存中,为了避免服务器断电等原因导致Redis进程异常退出后数据永久丢失,需要定期将Redis中的数据以某种形式(数据或者命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。除此之外为了进行灾难备份,可以持久将文件拷贝到一个远程位置(比如备份服务器)。

2. Redis 进行持久化方式及其优缺点

  • RDB持久化:原理是将Redis在内存中的数据库记录 定时保存到磁盘上(快照)

  • AOF 持久化(append only file):原理是将Redis的 操作日志已追加的方式写入文件,类似于mysql的 binlog(增量备份)

优缺点:RDB持久化保存数据慢、实时性较差但是恢复比较快,缺点是若进程退出可能会丢失数据。

              AOF持久化保存数据快、实时性较好但是恢复比较慢,进程退出不会造成数据丢失,即使丢失也就丢失最后很少一部分。

现在市场大部分用的是AOF持久化方式,不过RDB持久化仍然有其用武之地

3.RDB持久化原理,触发方式,执行过程。

(1)RDB持久化原理

 

 

RDB 持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,Redis从master主进程先fork出一个子进程,使用写时复制机制,子进程将内存的数据保存为一个临时文件,比如:tmp-.rdb,当数据保存完成之后再将上一次保存的RDB文件替换掉,然后关闭子进程,这样可以保证每一次做RDB快照保存的数据都是完整的。因为直接替换RDB文件的时候,可能会出现突然断电等问题,而导致RDB文件还没有保存完整就因为突然关机停止保存,而导致数据丢失的情况.后续可以手动将每次生成的RDB文件进行备份,这样可以最大化保存历史数据

 

标签:持久,可用,数据库,Redis,保存,RDB,数据
From: https://www.cnblogs.com/daiwei-123/p/17274162.html

相关文章

  • 数据库重构探讨系列(1)
    数据库重构探讨系列(1)基础 1、数据库重构分成6类:2、数据库味道与“代码味道”概念相似,代码味道是代码中出现常见问题,表明需要进行重构。数据库味道表明数据库需要重构。这些味道包括:(1)多用途的列如一个列被用于多种用途,就可能存在额外的代码来确保源数据以“正确的方式......
  • 一个机器开启多个redis
    一个机器开启多个redis复制redis.conf(可以先查一下redis.conf路径在哪里,find/-nameredis.conf)cpredis.confredis3.conf修改port、pidfile(命令行下用/port可以快速查询,按n查找下一个)port6381​pidfile/var/run/redis_6381.pid注意路径是否写对src/redis-s......
  • JDBC和MyBatis数据库访问技术
    传统的JavaWeb应用开发时,一般使用JDBC进行数据库连接和操作SQL命令。但是,随着互联网技术的飞速发展,使用JDBC已经满足不了项目的开发需求,出现了Hibernate、MyBatis等一些优秀的持久层框架,它们结合了JDBC的优点,使得开发简捷、规范、快速,系统易维护、易扩展。1.1JDBC数据库访......
  • 数据库基础知识
    一、DB/DBSM/DBS1.数据库DataBase(DB)是信息的集合;或是由DBSM管理的数据的集合2.数据库管理系统DatabaseManagementSystem(DBSM)是一种操纵和管理DB的大型软件,通常用于建立、使用、维护DB3.数据库系统DataBaseSystem(DBS)通常由软件、DB和数据管理员组成......
  • 在 MySQL 数据库中删除重复记录的步骤
    在MySQL数据库中删除重复记录的步骤当我们在处理数据库中的数据时,有时候会出现重复记录的情况,这些重复记录会影响数据的正确性,需要将其删除。下面是在MySQL数据库中删除重复记录的步骤:1.查找重复记录首先,我们需要找到数据库表中的重复记录。可以使用以下SQL语句查询表中......
  • Redis和kafka比较,两者的区别和各自的优势。
    1.Redis,它首先是一个内存数据库,其提供的PUB/SUB功能把消息保存在内存中(基于channel),因此如果你的消息的持久性需求并不高且后端应用的消费能力超强的话,使用RedisPUB/SUB是比较合适的使用场景。比如官网说提供的一个网络聊天室的例子:模拟IRC,因为channel就是IRC中的服务器。用户......
  • 向数据库中写入图片
            ifpose.all_save_image==0:          sql="INSERTINTOstudentmemo.student(idx,pic0)VALUES (%s,%s)"          args=(pose.id,crop)          cursor.execute(sql,args) ......
  • RedisInsight的使用(Redis图形化工具)
    建议连接redis-cluster需求的,并且没有设置密码的,安装redisinsight-win-1.13.1.msi,但是官网说1.X版本在23/4/30后就不支持了。在浏览器中输入http://IP:8001就能看到主界面   勾选IhavereadandunderstoodtheRedisInsightLicenseTerms,r然后点CONFIRM   ......
  • 为什么说数据库连接很消耗资源
    相信有过工作经验的同学都知道数据库连接是一个比较耗资源的操作。那么资源到底是耗费在哪里呢?本文主要想探究一下连接数据库的细节,尤其是在Web应用中要使用数据库来连接池,以免每次发送一次请求就重新建立一次连接。对于这个问题,答案都是一致的,建立数据库连接很耗时,但是这个耗时......
  • navicat连接云服务器数据库
    centos7拉取mysql报mysqld:Can'treaddirof'/etc/mysql/conf.d/'(Errcode:2-Nosuchfileordirectory)>mysqld:[ERROR]Fatalerrorindefaultshandling.Programaborted!此情况针对于linux云服务器拉取mysql镜像启动容器后dockerps-a查看容器状态为exit(0),容......