Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理

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

分布式缓存

单节点Redis存在着:

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

Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习

Redis持久化

RDB持久化

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

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

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

Redis学习(三)分布式缓存、多级缓存、Redis实战经验、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,学习

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底层原理,中间件,缓存,redis,学习

增量同步

主从第一次同步是全量同步,但如果slave重启后同步,则执行增量同步
Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习
Redis学习(三)分布式缓存、多级缓存、Redis实战经验、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底层原理,中间件,缓存,redis,学习

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

项目中配置RedisTemplate哨兵模式

步骤:

Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,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实战经验、Redis底层原理,中间件,缓存,redis,学习

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

Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习

Redis多级缓存

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

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

Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习
Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习

JVM进程缓存

Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习

Caffeine

Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习

Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习
Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习

Caffeine实现本地进程缓存案例

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

Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习

Redis实战经验

Redis键值设计

优雅的key结构

Redis学习(三)分布式缓存、多级缓存、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,学习

批处理优化

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

Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习

pipeline

Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习
Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习

集群下的批处理

Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习
spring的Redistemplate已经提供了并行slot的集群下的批处理实现。
Redis学习(三)分布式缓存、多级缓存、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实战经验、Redis底层原理,中间件,缓存,redis,学习
Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理,中间件,缓存,redis,学习文章来源地址https://www.toymoban.com/news/detail-564161.html

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

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

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

相关文章

  • Redis分布式缓存

    -- 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: Redis有两种持久化方案: RDB持久化 AOF持久化        RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做 Redis数据快照 。简单来说就是把 内存中的所有数据都记录到磁盘 中。当Redis实例故障重启后,

    2024年02月12日
    浏览(52)
  • Redis(分布式缓存详解)

    Redis:基于内存的键值存储系统,通常用作高性能的数据库、缓存和消息队列代理,是互联网广泛应用的存储中间件 特点 :基于内存存储,读写性能高 Redis与MySQL区别 Redis以键值对形式存储,MySQL以表格形式存储 Redis存储在 内存 ,MySQL存储在 磁盘 Redis存储 高效 ,MySQL存储 安

    2024年02月16日
    浏览(47)
  • Redis高级-分布式缓存

    – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: Redis有两种持久化方案: RDB持久化 AOF持久化 RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取

    2024年04月16日
    浏览(38)
  • Redis分布式缓存方案

    数据丢失:数据持久化 并发能力弱:搭建主从集群,实现读写分离 故障恢复问题:哨兵实现健康检测,自动恢复 存储能力:搭建分片集群,利用插槽机制实现动态扩容 RDB持久化 数据库备份文件,也叫快照,把内存数据存到磁盘。使用save进行主动RDB,会阻塞所有命令。建议

    2023年04月25日
    浏览(43)
  • 缓存的变更(JVM本地缓存->Redis分布式缓存)

    在一次需求修改中,下游的服务附加提出了,针对某个业务数据缓存的生效时间的要求 原JVM设计方案: 采用jvm本地缓存机制,定时任务30秒刷新一次 现在redis方案: 因为很多地方使用了这个业务数据缓存,使用方面不能改动过多 因为是分布式部署,如果只使用jvm缓存,无法

    2024年02月11日
    浏览(48)
  • 【开发经验】之记一次Redis分布式锁造成的事故

    有次,运营和商家做了个限量抢购活动,限量100件,但活动当天却超卖了,最终卖出的数量是160多件。这种超卖是比较严重的事故,出现了的话基本上和分布式锁有关系。 项目中的抢购订单使用了分布式锁,而分布式锁的是基于Redis实现的,下面是订单抢购核心代码(使用伪

    2024年02月08日
    浏览(48)
  • 23-MyBatis缓存、本地缓存、分布式Redis缓存、前端缓存

             MyBatis一级缓存、          MyBatis二级缓存、          本地缓存:单节点          分布式Redis缓存:多节点          前端sessionStorage缓存:会话缓存          前端localStorage缓存:前端本地缓存 MyBatis一级缓存默认是开启的。 在Spring Boot中需要添加

    2024年02月13日
    浏览(36)
  • SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】

    上一篇实现了单体应用下如何上锁,这一篇主要说明如何在分布式场景下上锁 上一篇地址:加锁 需要注意的点是: 在上锁和释放锁的过程中要保证 原子性操作 核心是上锁和解锁的过程 关于解锁使用脚本参考:SET key value [EX seconds] [PX milliseconds] [NX|XX] 3.1 一个服务按照多个端口同时

    2023年04月10日
    浏览(52)
  • Redis分布式缓存部署方案详解

    高可用性 :分布式部署可以避免单点故障,提高系统的可用性。 高性能 :分布式部署可以通过增加节点数量来提高系统的吞吐量和响应速度。 易于扩展 :分布式部署可以方便地扩展系统的容量和性能,只需添加新节点即可。 Redis的分布式部署有多种方式,例如主从复制、

    2024年02月07日
    浏览(54)
  • 初识 Redis - 分布式,内存数据存储,缓存

    目录 1. 什么是 Redis 1.1 Redis 内存数据存储 1.2 Redis 用作数据库 1.3 Redis 用作缓存 (cache) 1.4 用作消息中间件 The open source , in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker. 开源的 内存数据存储 ,被数百万开发人员用作 数据库、缓存、流引擎

    2024年02月15日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包