jt09日常笔记

preview
需积分: 0 1 下载量 11 浏览量 更新于2018-06-15 收藏 43KB DOCX 举报
### 知识点总结 #### 1. Redis 缓存技术 - **发展历史与架构**:Redis最初作为单一的内存存储系统出现,随着时间的发展,为了满足不同场景的需求,逐步演进出了多种部署模式,包括单例模式、分片模式(分布式缓存)、哨兵模式以及集群模式等。其中,分片模式通过将数据分散到多个Redis实例上,实现了负载均衡;哨兵模式则主要应用于Redis的高可用性保障,通过监控主节点状态并能在主节点故障时自动完成故障转移;集群模式则进一步提高了系统的可扩展性和容错性。 - **单线程机制与数据持久化**:Redis采用单线程模型处理客户端请求,这种设计简化了内部逻辑的同时保证了数据的一致性。为了防止因意外重启导致的数据丢失,Redis提供了两种持久化机制:RDB(快照)和AOF(Append Only File)。RDB机制会在指定的时间间隔内将内存中的数据集快照写入磁盘,而AOF机制则会记录服务器所执行的所有写操作命令,并在服务器重启时重新执行这些命令以恢复数据。 - **数据类型**:Redis支持五种主要的数据类型,分别是字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(ZSet),其中字符串和哈希是最常用的数据类型。 #### 2. 分布式缓存技术 - **Sharding**:为了提高Redis的扩展性和降低单点压力,引入了Sharding(分片)的概念。通过将数据划分到不同的节点上来实现负载均衡,通常采用一致性哈希算法来分配数据。 - **一致性哈希**:这是一种特殊的哈希算法,用于解决分布式环境中数据分发的问题。通过一致性哈希,可以在不改变其他节点映射的情况下,添加或移除节点,从而实现动态调整节点数量的目的。 #### 3. Redis 高可用性 - **哨兵机制**:哨兵是一种监控Redis实例健康状况、消息通知、配置中心以及自动故障转移的服务。至少需要两个哨兵才能构成高可用性系统,确保主从切换过程中不会因为单点失败而导致整个系统不可用。 - **哨兵配置**:在使用哨兵机制时,需要注意保护模式(protected-mode)的设置,尤其是在哨兵进行主从切换时,新的IP地址需要正确地写入`sentinel.conf`配置文件中。 #### 4. Redis 在项目中的应用 - **Spring 封装**:在实际项目中,通常会将Redis与Spring框架结合使用,通过自定义的RedisService类来封装Redis的操作逻辑。 - **性能优化**:在控制器(Controller)和服务层(Service)等多层级中合理利用Redis缓存可以显著提升系统性能,减少对数据库的访问频率,从而减轻数据库的压力。 - **具体业务场景**:例如,在商品详情查询的业务场景中,首先尝试从Redis缓存中获取数据,如果缓存中不存在,则从数据库中读取数据并更新到缓存中。 #### 5. 新SSO 单点登录系统 - **概念与架构**:SSO(Single Sign-On)单点登录是一种让用户只需登录一次即可访问多个应用系统的认证模式。新SSO系统通过结合Redis技术,解决了传统Session机制中的权限管理与共享问题。 - **工作原理**:新SSO系统中,用户的认证信息不再存储于各应用系统的Session中,而是集中存储于Redis中,通过特定的key(如ticket)来标识和获取用户信息。 - **接口设计与实现**:在新SSO系统的设计中,通常会涉及到多个开发团队之间的协作,因此需要明确业务接口文档(包括URL链接、请求参数及返回结果等)。例如,用户注册、登录、登出等功能都需要通过相应的接口来实现。 - **具体实践**:在用户注册和登录的业务场景中,可以通过Ajax异步请求的方式实现前后端分离,提高用户体验。例如,在用户注册时,前端可以向后端发送校验请求,验证用户名、手机号等信息的唯一性。 通过上述知识点的总结,可以看出Redis及其相关的分布式缓存技术和单点登录(SSO)系统在现代Web应用中扮演着至关重要的角色,不仅能够大幅提升系统的性能和可用性,还能有效简化开发流程,提高开发效率。