Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验

这篇具有很好参考价值的文章主要介绍了Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分布式缓存

单节点Redis存在着:

  • 数据丢失问题:单节点宕机,数据就丢失了。
  • 并发能力和存储能力问题:单节点能够满足的并发量、能够存储的数据量有限。
  • 故障恢复问题:如果Redis宕机,服务不可用,需要一种自动的故障恢复手段。

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis持久化

RDB持久化

RDB(Redis database backup file,Redis数据库备份文件)

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据,完成fork后,读取内存数据并写入RDB文件。fork采用的是copy-on-write技术:

  • 当主进程执行读操作时,访问共享内存
  • 当主进程执行写操作时,则会拷贝一份数据,执行写操作。

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

AOF持久化

AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis主从

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis数据同步原理

全量同步

主从节点间的第一次同步采用的是全量同步,全量同步的流程如下:

  • slave节点请求增量同步
  • master节点判断replid,如果发现id不一致拒绝增量同步,id不一致说明是第一次同步,master会返回master的数据版本信息,尝试建立全量同步。
  • slave收到后,保存版本信息。
  • master节点执行bgsave,生成RDB,生成RDB期间的所有命令会保存在repl-backlog中,随后向slave发送RDB文件。
  • slave收到RDB文件后,清空本地数据,加载master节点发来的RDB文件。
  • 后序master节点会发送repl-baklog文件,slave收到后执行其中的命令,保持与master的数据同步。

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

增量同步

主从第一次同步是全量同步,但如果slave重启后同步,则执行增量同步
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis哨兵

哨兵的作用和原理

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

sentinel(哨兵)的三个作用是什么?
  • 监控
  • 故障转移
  • 通知
sentinel如何判断一个Redis实例是否健康?
  • 每隔1秒发送一次ping命令,如果超过一定时间没响应,认为是主观下线
  • 如果超过一半的sentinel都认为实例主观下线,则判断服务客观下线。
master出现故障后,新的master选择过程是怎样的?

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

故障转移的步骤有哪些?
  • 首先选定一个slave作为新的master,执行slaveof no one
  • 然后让所有的节点都执行slaveof 新的master
  • 修改故障节点配置,添加slaveof 新的master

项目中配置RedisTemplate哨兵模式

步骤:

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis分片集群

主从和哨兵可以解决高可用、高并发持续的问题,但是依然有两个问题没有解决:

  • 海量数据存储问题
  • 高并发读写的问题

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
分片集群中有多个master,每个master都可以有多个slave节点,master间通过ping监测彼此健康状态,此时就不再需要哨兵机制了。

Redis散列插槽

Redis会把一个master的节点映射到 0 - 16383个插槽上,数据的key不是与节点绑定,而是与插槽绑定。

Redis如何判断某个key应该在哪个实例?

  • 将16384个插槽分配到不同的实例。
  • 根据key的有效部分计算哈希值,对16384取余。
  • 余数作为插槽,寻找插槽所在的实例即可。

如何将同一类数据固定的保存在同一个Redis实例?

  • 这一类数据使用相同的有效部分,例如key都以{typeid}为前缀。

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis集群伸缩

集群伸缩的概念就是动态添加和移除节点
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

项目中RedisTemplate配置访问分片集群

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis多级缓存

多级缓存就是充分利用请求处理的各个环节,分别添加缓存,减轻Tomcat压力,提升服务性能。

  • 浏览器、客户端缓存
  • Nginx本地缓存
  • Redis缓存
  • Tomcat进程缓存

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

JVM进程缓存

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Caffeine

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Caffeine实现本地进程缓存案例

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
第一步:
构建缓存配置类,创建2个缓存的Bean对象:
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
第二步:
在使用的地方,将缓存对象注入,编写缓存查询和缓存未命中业务逻辑。

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis实战经验

Redis键值设计

优雅的key结构

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

解决BigKey

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

选择恰当的数据类型

将大型的哈希表,进行拆表,拆解为小型的哈希表:
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

批处理优化

通过批处理执行,减少网络传输耗时。
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

pipeline

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

集群下的批处理

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
spring的Redistemplate已经提供了并行slot的集群下的批处理实现。
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

服务端优化

持久化配置

Redis持久化虽然可以保证数据安全,但也会带来很多额外的开销,因此持久化请遵循下列建议:

  • 用来做缓存的Redis实例尽量不要开启持久化,因为做缓存的数据只是为了加快响应速度,重要性没那么高。但是对于用来做分布式锁的数据,必须开启持久化,保证数据安全。
  • 建议关闭RDB持久化功能,使用AOF持久化。RDB持久化虽然文件占用更小,恢复更快,但是RDB在fork进程,生成RDB文件过程中,可能导致数据丢失。
  • 利用脚本定期在slave节点做RDB,实现数据备份

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

慢查询

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

内存配置

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习

Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习
Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验,中间件,缓存,redis,学习文章来源地址https://www.toymoban.com/news/detail-595777.html

到了这里,关于Redis学习(三)持久化机制、分布式缓存、多级缓存、Redis实战经验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis从入门到精通(十三)Redis分布式缓存(一)RDB和AOF持久化、Redis主从集群的搭建与原理分析

    单机Redis存在四大问题: 1)数据丢失问题; 2)并发能力问题; 3)故障恢复问题; 4)存储能力问题。 而Redis分布式缓存,即基于Redis集群来解决单机Redis存在的问题: 1)数据丢失问题:实现Redis数据持久化; 2)并发能力问题:搭建主从集群,实现读写分离; 3)故障恢复问

    2024年04月12日
    浏览(29)
  • 【Redis】Redis持久化机制

    Redis是基于内存存储的数据库,如果遇到服务重启或者崩溃,内存中的数据将会被清空。所以为了确保数据安全性和可靠性,我们需要将内存中的数据持久化到磁盘上。 持久化不仅可以防止由于系统故障、重启或者其他原因导致的数据丢失。还可以用于备份、数据恢复和迁移

    2023年04月20日
    浏览(50)
  • redis 持久化机制

    client redis[内存] ----- 内存数据- 数据持久化--磁盘 Redis官方提供了两种不同的持久化方法来将数据存储到硬盘里面分别是: RDB 快照(Snapshot) AOF (Append Only File) 只追加日志文件 1 快照(Snapshot) 1. 特点 这种方式可以将某一时刻的所有数据都写入硬盘中,当然这也是 redis的默认开启持久

    2024年01月22日
    浏览(32)
  • redis的持久化机制

    简单来说就是将内存数据保存到硬盘,防止机器重启后数据丢失。 1)拍快照(RDB,Redis DataBase):将某一个时刻Redis的内存数据,以二进制的方案写入磁盘,速度快,会数据丢失。 2)文件追加方案(AOF,Append Only File):记录所有的操作命令,并以日志的形式追加到文件中,速度慢

    2024年02月16日
    浏览(31)
  • .NET分布式Orleans - 5 - 持久化

    在分布式系统中,数据的持久化是至关重要的一环。 Orleans 7 引入了强大的持久化功能,使得在分布式环境下管理数据变得更加轻松和可靠。 本文将介绍什么是 Orleans 7 的持久化,如何设置它以及相应的代码示例。 什么是 Orleans 7 的持久化? Orleans 7 的持久化是指将 Orleans 中的

    2024年03月27日
    浏览(34)
  • 深入解析 Redis 持久化机制

    我们都知道,Redis 的数据存储在内存中, 一旦服务器宕机,内存中的数据将全部丢失。因此,对 Redis 来说,实现数据的持久化,避免从后端数据库中进行恢复,是至关重要的。本篇我们详细讲解下 Redis 的三种持久化机制,分别是  AOF(Append Only File)  日志和  RDB 快照  以及

    2024年02月12日
    浏览(31)
  • redis持久化机制 & 事务详解

    目录 前言: 持久化机制 RDB(Redis DataBase) 手动触发  save bgsave 自动触发 RDB特点 AOF(append only file) 缓冲区刷新策略 重写机制 aof重写流程 混合持久化 事务 事务操作命令 WATCH WATCH实现原理     redis为了保证高可用引入了持久化机制,目的就是为了redis服务器重启时可以恢复

    2024年02月11日
    浏览(30)
  • 搞明白Redis持久化机制

    Redis是一种内存数据库,其内存中的数据存储在计算机的内存中,如果服务器发生崩溃或者重启,内存中的数据将会丢失。为了避免这种情况发生,Redis提供了两种持久化机制:RDB和AOF。 Redis支持将当前数据状态快照持久化到硬盘上,这种快照是一个二进制文件,包含了Redis在

    2023年04月25日
    浏览(31)
  • 【Redis】—— Redis的RDB持久化机制

                                                                       💧 【 R e d i s 】—— R e d i s 的 R D B 持久化机制 color{#FF1493}{【Redis】 —— Redis的RDB持久化机制} 【 R e d i s 】 —— R e d i s 的 R D B 持久化机制 💧           🌷 仰望天空

    2024年02月13日
    浏览(26)
  • 【Redis】Redis持久化机制RDB与AOF

    目录 一、RDB 1、概念 2、RDB文件保存 3、执行RDB 4、触发RDB 5、fork原理 6、RDB的缺点 二、AOF 1、概念 2、开启AOF 3、触发AOF 4、触发重写AOF 三、区别 RDB全称为Redis Database Backup File(Redis数据备份文件),也叫做Redis数据快照。简单的来说就是把某一时刻Redis内存里的数据都记录到磁

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包