Hadoop-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop
  • HDFS
  • MapReduce
  • Hive
  • Flume
  • Sqoop
  • Zookeeper
  • HBase
  • Redis

章节内容

上一节我们完成了:

  • HBase Maven工程 POM引入
  • HBase JavaAPI
  • HBase Java实现 增、删、改、查

背景介绍

这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。

之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。

  • 2C4G 编号 h121
  • 2C4G 编号 h122
  • 2C2G 编号 h123

Redis简介

Redis(Remote Dictionary Server)远程字典服务。是用C语言开发的。

官方网站是:

shell 复制代码
http://redis.io/

Redis 数据类型

其中一共五种数据类型:

  • 字符串类型
  • 散列类型
  • 列表类型
  • 集合类型
  • 有序集合类型

缓存场景

DB缓存

DB缓存,减轻DB服务器压力。

一般情况下数据存在数据库中,应用程序直接操作数据库。

当访问量上万,数据库压力增大,可以采取的方案有:

  • 读写分离
  • 分库分表


数据库的文件是在硬盘中与内存交换

对于大量瞬时访问,会导致频繁IO无法工作

Session分离

传统的Session是由Tomcat自行维护和管理,在集群的Tomcat环境中,不同的Tomcat会有各自的Session。

  • 各个Tomcat之间复制Session,性能损耗
  • 不能保证Tomcat之间的Session实时同步

可以将登录后的Session信息存入 Redis 中,这样多个Tomcat服务器可以共享Session信息。

具体的整体架构图是:

分布式锁

一般锁是多线程 锁,但是在多个进程中,需要上锁的话,就需要分布式锁。

读写模式

旁路模式

Cache Aside Pattern 旁路缓存,是最经典缓存+数据库读写模式

具体的方案是:读的时候,先读缓存,缓存没有再读数据库,读出后写入缓存。

代码逻辑上如下图:

当我们要更新数据的时候:先更新数据库,再删除缓存。

穿透模式

Read/Write Through Pattern 穿透读/穿透写 直接读/直接写 模式。

  • Read Through Pattern
  • Write Through Pattern

缓存模式

Write Behind Caching Pattern 只更新缓存模式

应用程序只更新缓存,缓存通过异步的方式将数据批量整合写入DB
不能实时同步数据,甚至宕机会丢数据

Redis 适用场景

  • 缓存使用,减轻DB压力
  • DB使用 用于临时存储数据
  • 解决分布式场景下Session分离的问题
  • 任务队列(秒杀,抢红包)乐观锁等等
  • 应用排行榜
  • 签到 bitmap
  • 冷热数据交换
  • 等等

缓存场景

Redis 常用于缓存系统,以提高数据读取速度并减轻数据库的负载。它可以存储经常访问的数据,如热门文章、用户信息、会话数据等。支持设置过期时间(TTL),自动清理过期的数据。

消息队列

Redis 的 List 结构和 Pub/Sub 功能可以用来实现消息队列,支持生产者和消费者模式。可以用于任务队列、异步处理等场景。

会话存储

Redis 被广泛用于会话管理,特别是在分布式系统中,可以共享会话数据。

由于其高性能和持久化选项,可以确保会话数据的快速读取和安全存储。

排行榜/计数器

Redis 的 Sorted Set 结构可以轻松实现排行榜功能。

适用于社交网络中的点赞数、游戏中的得分排名等场景。

实时分析

Redis 可以用于实时数据分析和统计,如网站的实时访问量统计、应用性能监控等。

通过其快速的读写性能,可以实时更新和查询统计数据。

地理位置存储

Redis 的 Geospatial 功能可以存储和操作地理位置信息,适用于位置查询、距离计算等场景。

可用于地图服务、物流跟踪等应用。

分布式锁

Redis 可以用于实现分布式锁,保证在分布式系统中的数据一致性。

通过 SET NX 和 EXPIRE 命令,可以创建具有超时机制的锁。

发布/订阅(Pub/Sub)系统

Redis 提供了发布/订阅消息模式,适用于实时消息传递和通知系统。

适用于聊天室、实时推送等场景。

数据结构存储

Redis 支持多种复杂数据结构,如字符串、哈希、列表、集合、有序集合等,可以满足多种数据存储需求。

适用于需要快速访问和操作复杂数据结构的场景。

流处理

Redis 5.0 引入了 Stream 数据结构,用于处理实时数据流。

适用于日志收集、事件溯源等场景。

相关推荐
AnAnCode5 分钟前
ECS 架构 (Entity Component System) - 数据导向编程快速入门
java·架构·游戏服务器
i020813 分钟前
Java 17 + Spring Boot 3.2.5 使用 Redis 实现“生产者–消费者”任务队列
java·spring boot·redis
SUPER526616 分钟前
运维hbase服务重启,导致应用查询异常 hbase:meta
运维·数据库·hbase
Xの哲學43 分钟前
Linux RTC深度剖析:从硬件原理到驱动实践
linux·服务器·算法·架构·边缘计算
阿乔外贸日记1 小时前
中国汽车零配件出口企业情况
大数据·人工智能·智能手机·云计算·汽车
天远数科1 小时前
微服务架构下的风控数据集成:基于Go的支付行为指数API实战
大数据·api
飞飞传输1 小时前
选对国产FTP服务器,筑牢数据传输安全防线,合规高效双达标
大数据·运维·安全
拾忆,想起2 小时前
Dubbo配置方式大全:七种配置任你选,轻松玩转微服务!
服务器·网络·网络协议·微服务·云原生·架构·dubbo
2501_941142932 小时前
云原生微服务环境下服务熔断与降级优化实践——提升系统稳定性与容错能力
java·大数据·网络
ん贤2 小时前
高可靠微服务消息设计:Outbox模式、延迟队列与Watermill集成实践
redis·微服务·云原生·架构·消息队列·go·分布式系统