点一下关注吧!!!非常感谢!!持续更新!!!
目前已经更新到了:
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语言开发的。
官方网站是:
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 数据结构,用于处理实时数据流。
适用于日志收集、事件溯源等场景。