YMP在線手冊
/ 緩存模塊使用示例
緩存模塊使用示例
示例一:直接通過緩存模塊操作緩存數(shù)據(jù)
public static void main(String[] args) throws Exception { YMP.get().init(); try { // 操作默認(rèn)緩存 Caches.get().put("key1", "value1"); System.out.println(Caches.get().get("key1")); // 操作指定名稱的緩存 Caches.get().put("default", "key2", "value2"); System.out.println(Caches.get().get("default", "key2")); } finally { YMP.get().destroy(); } }
注:當(dāng)指定緩存名稱時,請確認(rèn)與名稱對應(yīng)的配置是否已存在;
執(zhí)行結(jié)果:
value1 value2
示例二:基于注解完成類方法的緩存
這里用到了@Cacheable注解,作用是標(biāo)識類中方法的執(zhí)行結(jié)果是否進(jìn)行緩存,需要注意的是:
首先@Cacheable注解必須在已注冊到Y(jié)MP類對象管理器的類上聲明,表示該類支持緩存;
其次,在需要緩存執(zhí)行結(jié)果的方法上添加@Cacheable注解;
@Cacheable注解參數(shù)說明:
cacheName:緩存名稱, 默認(rèn)值為default;
key:緩存Key, 若未設(shè)置則使用keyGenerator自動生成;
generator:Key生成器接口實(shí)現(xiàn)類,默認(rèn)為DefaultKeyGenerator.class;
scope:緩存作用域,可選值為APPLICATION、SESSION和DEFAULT,默認(rèn)為DEFAULT,非DEFAULT設(shè)置需要緩存作用域處理器(ICacheScopeProcessor)接口配合;
timeout:緩存數(shù)據(jù)超時時間, 可選參數(shù),數(shù)值必須大于等于0,為0表示默認(rèn)緩存300秒;
示例代碼:
@Bean @Cacheable public class CacheDemo { @Cacheable public String sayHi(String name) { System.out.println("No Cached"); return "Hi, " + name; } public static void main(String[] args) throws Exception { YMP.get().init(); try { CacheDemo _demo = YMP.get().getBean(CacheDemo.class); System.out.println(_demo.sayHi("YMP")); System.out.println(_demo.sayHi("YMP")); // System.out.println("--------"); // System.out.println(_demo.sayHi("YMPer")); System.out.println(_demo.sayHi("YMP")); System.out.println(_demo.sayHi("YMPer")); } finally { YMP.get().destroy(); } } }
執(zhí)行結(jié)果:
No Cached Hi, YMP Hi, YMP -------- No Cached Hi, YMPer Hi, YMP Hi, YMPer
以上結(jié)果輸出可以看出,sayHi方法相同參數(shù)首次被調(diào)用時將輸出“No Cached”字符串,說明它沒有使用緩存,再次調(diào)用時直接從緩存中返回值;