分布式缓存简介
1、什么是分布式缓存
定义:分布式缓存是一种将应用系统与缓存组件分离的缓存机制,允许多个应用系统共享同一套缓存数据。
特点:具备共享缓存服务、可集群部署的特性,为缓存系统提供高可用的运行环境及缓存共享的程序运行机制。
2、本地缓存VS分布式缓存
本地缓存优点:快速请求缓存,无网络开销,适用于不需要集群支持的单应用场景。
本地缓存缺点:与应用程序耦合,无法共享缓存数据,内存资源浪费。
分布式缓存优势:与应用分离,允许多应用系统间直接共享缓存数据,是微服务架构的重要组成部分。
3、分布式缓存的特性
高性能:使用高速内存作为存储介质,以key/value形式存储数据。
动态扩展性:通过增减节点应对数据访问负载变化,提高资源利用率。
高可用性:包含数据和服务可用性,自动发现并处理故障,防止中断或数据丢失。
易用性:单一管理视图,简单API接口,无需人工配置扩展或失效恢复,多数系统提供图形化管理控制台。
4、分布式缓存的应用场景
页面缓存:缓存Web页面内容片段,如HTML、CSS和图片等。
应用对象缓存:作为ORM框架的二级缓存,减轻数据库负载压力。
状态缓存:缓存包括Session会话状态及应用横向扩展时的状态数据。
并行处理:涉及大量中间计算结果需要共享的场景。
事件处理:提供连续查询处理技术,满足实时性需求。
极限事务处理:为事务型应用提供高吞吐率、低延时解决方案。
为什么要用分布式缓存
1、提升读取速度:引入缓存层可以显著提高数据读取的速度。
2、增强系统扩展能力:通过增加缓存来提升系统的承载能力。
3、降低总成本:单台缓存即可承担多台DB的请求量,节约机器成本。
常用的缓存技术
Memcached
特性:高性能分布式内存对象缓存系统,以物理内存作为缓存区,使用keyvalue方式存储数据,基于文本行的简单协议,依赖客户端实现分布式能力,采用LRU缓存淘汰策略,不支持持久化。
Redis
优势:性能极高,支持多种数据类型和丰富的特性,支持两种持久化方式RDB和AOF,通过Redis cluster提供集群模式。
归纳而言,分布式缓存在现代应用开发中扮演着至关重要的角色,不仅提升了数据处理的速度和效率,还增强了系统的扩展性和可靠性,而选择合适的分布式缓存技术,如Redis或Memcached,并结合最佳实践进行配置和使用,将能最大化地发挥分布式缓存的优势。
下面是一个关于设置分布式缓存的介绍,包括一些关键的参数和步骤:
参数/步骤 | 描述 |
缓存系统选择 | |
缓存类型 | Redis、Memcached |
连接配置 | |
服务器地址 | 缓存服务器的IP地址和端口 |
连接池配置 | 最大连接数、最小空闲连接数、连接超时时间等 |
序列化方式 | 如:Fastjson、Jackson、JDK序列化 |
缓存策略 | |
数据过期时间 | 设置缓存数据的过期时间,避免数据过时 |
冷热数据分离 | 将频繁访问的数据和不常访问的数据分开存储 |
缓存更新策略 | 如:LRU(最近最少使用)、FIFO(先进先出) |
分布式缓存实现 | |
分布式锁 | 解决并发下的数据一致性问题,如使用Redisson |
数据一致性 | 在数据库更新时,同步更新缓存,或使用拦截器方式 |
缓存穿透处理 | 设置空缓存、布隆过滤器等 |
缓存击穿处理 | 如:设置随机过期时间 |
Mybatis集成 | |
自定义缓存器 | 实现org.apache.ibatis.cache.Cache 接口 |
putObject方法 | 将查询结果缓存到分布式缓存中 |
getObject方法 | 从分布式缓存中获取查询结果 |
缓存器初始化 | 实现InitializingObject 接口的initialize 方法 |
缓存使用 | |
使用缓存注解 | 在Mybatis的Mapper XML中设置useCache 属性 |
缓存Key生成 | 保证相同SQL和参数生成相同的Redis Key |
清除缓存策略 | 选择性清除相关缓存,而非全部清除 |
请注意,这个介绍是一个高层次的概览,具体设置可能需要根据所选的缓存系统、应用需求、以及具体的业务场景来调整。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/716346.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复