首页 > 数据库 >redis持久化

redis持久化

时间:2024-07-30 13:57:10浏览次数:19  
标签:文件 持久 AOF redis bgsave 内存

除了正常服务以外,数据量的扩容,数据安全也属于高可用的范畴之内。

实现redis高可用的方式

1.持久化  最简单的高可用方法,主要功能就是备份数据。即把内存当中的数据保存到硬盘当中。

2.主从复制

3.哨兵模式

4.redis的集群

持久化概念

是把内存当中的数据保存到硬盘当中。开启持久化之后,会有一个持久化的文件。通过文件进行恢复。

面试题:

redis提供的持久化方式

1.RDB持久化:定时的将内存当中的数据保存到磁盘上,类似于快照的形式,用二进制压缩存储,后缀名是 .rdb 。每次Redis重启时,都会读取快照文件,进行恢复。默认的持久化方式就是RDB

2.AOF持久化

它是把操作的数据库指令以日志的形式保存在指定的文件当中,文件的后缀名 .aof 。类似与mysql的binlog。它没有时间和位置,只有命令。AOF持久化的实时性更好,只要是操作了都会记录在日志文件中,进程出现意外时,丢失的数据更少。AOF是主流的持久化方式。

RDB和AOF两者是配合使用。

AOF默认是关闭的。需要开启。

如果同时开启RDB和AOF,哪个优先级高?

一旦开启AOF,系统默认选择AOF进行恢复

重写:

充分非必要条件

一旦开启AOF持久之后,所有的数据库操作记录必然都会写入AOF持久化文件当中。

AOF的文件越大,记录的操作就越多,一旦要恢复,速度就会很慢。重写的作用就是为了压缩AOF持久化文件。重写就是把原内容压缩,后续新的读写,继续插入aof文件

注意:save不能直接在命令行执行,一旦执行了save,Redis的主进程会进入阻塞状态,读写都将不能进行。直到save完成,才能继续读写。save在生产当中禁用。

bgsave就是rdb快照保存的方式

bgsave在执行关闭redis服务的时候,也会自动执行bgsave

bgsave是主从复制的默认恢复模式,从节点执行全量恢复操作,主节点通过bgsave命令把rdb发送给从节点,除了配置文件save m/n  关闭redis会执行bgsave,开启redis也会执行bgsave

rdb的工作方式

AOF的工作方式

RDB持久化和AOF持久化之间的优缺点:

RDB文件小,传输速度快,适合全量复制,恢复速度也比AOF快,性能上影响较小

AOF 秒级持久化,数据量全,兼容性好。

缺点:文件大,恢复速度慢,性能影响大

但是,支持全量和增量。数据安全大于一切。

redis性能管理

命令:info memory

重要指标:

used_memory:853400  单位是字节,是redis中的数据占用内存的大小

内存碎片化率:

内存碎片化率=redis向系统申请的内存/redis数据实际占用的内存

命令:redis-cli info memory | grep ratio

指标:

allocator_frag_ratio:1.23     分配器的碎片化比例,值越大,碎片越多,导致内存越浪费
allocator_rss_ratio:6.38      分配器占用物理内存的比例
rss_overhead_ratio:1.24     表示占用物理内存的额外的开销的比例,这个值越小越好。redis实际使用的物理内存比rss更接近
mem_fragmentation_ratio:13.26  内存的碎片比例,已经分配点的内存,

redis-cli memory purge 手动清理内存碎片

redis常见的问题

缓存击穿

缓存雪崩:redis产生了大面积的故障(缓存数据丢失),所有的请求全部转发到了数据库。

数据库不适合高并发,很多集群就会崩溃,然后整个系统瘫痪

原因:1.人为

           2.缓存数据大量的同时过期,新的缓存没有及时生成

           3.redis服务集群崩溃 

怎么防备:

1.redis集群一定要做高可用方案(持久化、主从、哨兵、集群)

2.访问量过大,超过‘Redis本身的负载能力

    解决方案:’

标签:文件,持久,AOF,redis,bgsave,内存
From: https://blog.csdn.net/Hai990218/article/details/140788575

相关文章

  • Redis 集群
    Redis集群  Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。  下面会对集群的节点、槽指派、命令执行、重新分片、转向、故障转移、消息等各个方面进行介绍  一、节点  1.连接节点  一个Redis集群......
  • redis 表的统计信息
    redis表的统计信息要获取Redis表的统计信息,您可以使用INFO命令,该命令返回有关Redis服务器的各种信息和统计数据。例如,要获取关于键空间的统计信息,可以使用以下命令:  redis-cliINFOkeyspace这将返回类似以下内容的信息:  #Keyspacedb0:keys=10,expi......
  • Unity数据持久化——序列化/二进制/Json/PlayerPrefs
    序列化序列化是指把对象转换为字节序列的过程,而反序列化是指将字节序列恢复为对象的过程。序列化最主要的用途就是传递对象和保存对象。在Unity中保存和加载、prefab、Scene、Inspector窗口、实例化预制体等都使用了序列化和反序列化。下面是一个序列化和反序列化的例子......
  • Redis
    Redis快速入门Redis的常见命令和客户端使用初识RedisRedis前世今生,作者是一个以色列人,曾经在做一个关于广告业务,需要使用一款内存数据库,市面没有,自己就写了一个,Redis诞生。Redis是一款基于内存的数据存储结构!【内存】存储介质:半导体。​ 特点:存储效率高,断电数据丢失,存储......
  • 手搓Lock注解,一举解决redisson分布式锁
    最近闲来时间,写了个redis-lock-stater,在pom中引入即可,直接在所要加锁的函数中使用@lock注解即可1、首先需要了解什么是分布式锁分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作,若不同的系统或是同一个系统的不同主机之间共享了......
  • 《Redis设计与实现》读书笔记-客户端
    目录1.Client简介2.客户端属性1)(本文重点)比较通用的属性2)(后续分享)另外一类是和特定功能相关的属性2.1套接字文件描述符2.2名字2.3标志(flag)2.4输入缓冲区2.5命令参数和个数2.6命令函数2.7输出缓冲区3.总结1.Client简介Redis服务器是典型的一对多服务器程序:一个......
  • Redis快速入门
    一、简介redis为非关系型数据库,将数据以key-value(键值对)的形式存入内存基于内存存储,读写性能更高存储热点信息(短时间内存储大量数据)企业应用广泛官网Redis-TheReal-timeDataPlatform中文网Redis中文网二、下载与安装下载地址https://github.com/microsoftarc......
  • 基于EasyTcp4Net开发一个功能较为完善的去持久化聊天软件
    之前自己写了一篇介绍TCP的一些常用的功能介绍和特征,并且用代码做了示例,最终开发了一个EasyTcp4Net的TCP工具库,其最大的特色就是使用了微软提供的高性能库中的一些数据结构来处理TCP数据。最近辞职待业在家,也没啥事做,就利用自己写的TCP通讯库基础上开发了一个示例的聊天程序,功能......
  • (六)Redis 消息队列 List、Streams
    Redis适合做消息队列吗?有什么解决方案?首先要明白消息队列的消息存取需求和工作流程。1、消息队列我们一般把消息队列中发送消息的组件称为生产者,把接收消息的组件称为消费者,下图是一个通用的消息队列的架构模型:消息队列在存取消息时,必须要满足三个需求,分别是消息保序、处理重......
  • pinia持久化存储(pinia-plugin-persistedstate)
    快速开始|pinia-plugin-persistedstate(prazdevs.github.io)安装pnpmpnpmaddpinia-plugin-persistedstatenpmnpmipinia-plugin-persistedstateyarnyarnaddpinia-plugin-persistedstate将插件添加到pinia实例上import{createPinia}from'pinia'import......