# mcache **Repository Path**: msimw/mcache ## Basic Information - **Project Name**: mcache - **Description**: 基于spring 系统统一缓存(相对细粒度),让开发者不用管缓存的具体实现,更专注于业务逻辑。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: https://msimw.gitbooks.io/mcache/content/ - **GVP Project**: No ## Statistics - **Stars**: 39 - **Forks**: 13 - **Created**: 2017-09-06 - **Last Updated**: 2023-07-06 ## Categories & Tags **Categories**: cache-modules **Tags**: None ## README # 关于统一缓存工具的使用与扩展说明 ### 1.作用: 系统统一缓存,让开发者不用管缓存的具体实现,更专注于业务逻辑。 ### 2.实现功能: 粗粒度的缓存+相对细粒度的缓存。 ### Maven com.github.msimw mcache 1.0 ### 3.如何使用: 1.注解的介绍: 1.Cached 1.用在类上,用于标记需要缓存的类。 2.属性value用于标示缓存分组,默认值cache 2.Cacheable 1.用在需要缓存的方法上。 2.属性cache 标示使用哪一种缓存方式。目前支持redis,memcache。 3.属性value 用于标示缓存分组,默认值bst。 4.属性String[] keys用于标示用那几个字段作为缓存key。可以是参数或参数的属性, 当有多个重复的属性名时:可以使用[参数名.属性名]的形式(user.name)。 5.属性survivalTime缓存存活时间,默认30分钟,单位是秒。-1标示永不过期。 3.CacheEvict 或者 CacheEvicts(表示多个CacheEvict 清空多个缓存) 1.用在缓存有更新的方法上。 2.属性介绍参见 Cacheable 4.对于部分统一缓存满足不了的需求可使用CacheSupport接口来手动控制。 5.引入applicationContext-cache.xml文件到需要缓存的工程中。 ### 4.如何扩展 1.实现CacheHandler接口或继承AbstractCacheHandler类 2.将新的缓存处理器注入到CacheInterceptor 拦截器中 3.就可以在Cacheable注解上选择相应缓存处理器了。 ### 5.Demo 1.代码示例 @Cached public class DemoServiceImpl implements IDemoService { /** * 缓存 */ @Cacheable(keys = "id") public String query(String id, String name) { return "helloworld"; } /** * 更新 */ @CacheEvict(keys = "id") public void update(String id, String name) { } /** * 查询 */ @Cacheable(keys = "id") @Override public String query1(String id) { return null; } /** * 更新 */ @CacheEvict(keys = "id")//or @CacheEvict(keys = "demo.id") @Override public void update1(Demo demo) { } } 2.配置文件 2017-07-18