缓存(Cache)
缓存模块是以 EhCache 作为默认 JVM 进程内缓存服务,通过整合外部 Redis 服务实现多级缓存(MultiLevel)的轻量级缓存框架,并与 YMP 框架深度集成(支持针对类方法的缓存,可以根据方法参数值进行缓存),灵活的配置、易于使用和扩展。
Maven包依赖
<dependency>
<groupId>net.ymate.platform</groupId>
<artifactId>ymate-platform-cache</artifactId>
<version>2.1.4-dev</version>
</dependency>
注意:
若需要启用redis作为缓存服务,需额外添加以下依赖配置:
<dependency>
<groupId>net.ymate.platform</groupId>
<artifactId>ymate-platform-persistence-redis</artifactId>
<version>2.1.4-dev</version>
</dependency>
基础接口概念
开发者可以根据以下接口完成对缓存模块的自定义扩展实现。
-
缓存服务提供者接口:
ICacheProvider- DefaultCacheProvider - 基于EhCache缓存服务的默认缓存服务提供者接口实现类;
- RedisCacheProvider - 基于Redis数据库的缓存服务提供者接口实现类;
- MultievelCacheProvider - 融合EhCache和Redis两者的缓存服务提供者接口实现类,通过MultilevelKey决定缓存对象的获取方式;
-
缓存Key生成器接口:
ICacheKeyGenerator- DefaultCacheKeyGenerator - 根据提供的类方法和参数对象生成缓存Key,默认是将方法和参数对象进行序列化后取其MD5值;
-
序列化服务接口:
ISerializer- DefaultSerializer - 默认序列化服务采用JDK自带的对象序列化技术实现;
-
缓存事件监听接口:
ICacheEventListener- 用于监听被缓存对象发生变化时的事件处理,需开发者实现接口;
-
缓存作用域处理器接口:
ICacheScopeProcessor- 用于处理
@Cacheable注解的scope参数设置为非DEFAULT作用域的缓存对象,需开发者实现接口;
- 用于处理
模块配置
配置文件参数说明
#-------------------------------------
# 缓存模块初始化参数
#-------------------------------------
# 缓存提供者, 可选参数, 默认值: default, 目前支持[default|redis|multilevel]或自定义类名称
ymp.configs.cache.provider_class=
# 缓存对象事件监听器, 可选参数, 此类需实现net.ymate.platform.cache.ICacheEventListener接口, 默认值: 空
ymp.configs.cache.event_listener_class=
# 缓存作用域处理器, 可选参数, 此类需实现net.ymate.platform.cache.ICacheScopeProcessor接口, 默认值: 空
ymp.configs.cache.scope_processor_class=
# 缓存Key生成器, 可选参数, 此类需实现net.ymate.platform.cache.ICacheKeyGenerator接口, 默认值: net.ymate.platform.cache.impl.DefaultCacheKeyGenerator
ymp.configs.cache.key_generator_class=
# 对象序列化接口实现, 可选参数, 默认值: SerializerManager.getDefaultSerializer()
ymp.configs.cache.serializer_class=
# 默认缓存名称, 可选参数, 默认值: default, 对应于Ehcache配置文件中设置name="__DEFAULT__"
ymp.configs.cache.default_cache_name=
# 默认缓存数据超时时间(秒), 可选参数, 数值必须大于等于0, 默认值: 0
ymp.configs.cache.default_cache_timeout=
# 可选参数, 若未设置或设置的文件路径无效将使用默认值: ${root}/cfgs/ehcache.xml
ymp.configs.cache.config_file=
# Redis是否采用Set存储缓存键名, 默认值: false
ymp.configs.cache.storage_with_set=
# 是否开启Redis订阅缓存元素过期事件, 可选参数, 默认值: false
ymp.configs.cache.enabled_subscribe_expired=
# Multilevel模式下是否自动同步Master和Slave级缓存, 可选参数, 默认值: false
ymp.configs.cache.multilevel_slave_auto_sync=