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