您好,登录后才能下订单哦!
本篇内容主要讲解“weed3-2.3.3.查询的缓存控制是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“weed3-2.3.3.查询的缓存控制是什么”吧!
源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3
框架提供的是控制服务。而非缓存服务本身,了解这个很重要。
1.缓存服务适配接口 ICacheService(平常用它的加强版 ICacheServiceEx)
//用它可以包装各种缓存服务 public interface ICacheService { void store(String key, Object obj, int seconds); Object get(String key); void remove(String key); int getDefalutSeconds(); String getCacheKeyHead(); } /** weed3内置了三个实现类: *EmptyCache,空缓存 *LocalCache,本地缓存 *SecondCache,二级缓存容器(可以把两个 ICacheService 拼到一起,变成一个二级缓存服务;多嵌套一下就是三级缓存服务了) */
2.在缓存服务上进行的操控接口:ICacheController
public interface ICacheController<T> { //使用哪个缓存服务 T caching(ICacheService service); //是否使用缓存 T usingCache(boolean isCache); //使用缓存并设置时间 T usingCache(int seconds); //为缓存添加标签 T cacheTag(String tag); }
1.先搞个服务实例出来
ICacheService cache = new LocalCache();
2.用起来
使用缓存,时间为默认(会自动产生稳定的缓存key)
db.table("test").select("*").caching(cache).getMapList();
使用缓存,并缓存30s
db.table("test") .caching(cache).usingCache(30) //也可以放在table() 和 select()之间 .select("*").getMapList();
给缓存加个tag(tag 相当于 缓存key的虚拟文件夹)
db.table("test") .caching(cache) .usingCache(30).cacheTag('test_all') //这是tag,不是key .limit(10,20) .select("*").getMapList();
*3.精细控制
根据查询结果控制缓存时间
db.table("test").where("id=?",10) .caching(cache) .select("*").getItem(UserModel.class,(cu,m)->{ if(m.hot > 2){ uc.usingCache(60 * 5); //热门用户缓存5分钟 }else{ uc.usingCache(30); } });
4.缓存清除
以一个分页查询为例
db.table("test").limit(20,10) .caching(cache).cacheTag("test_all") .select("*").getMapList(); db.table("test").limit(30,10) .caching(cache).cacheTag("test_all") .select("*").getMapList(); //不管你有多少分页,一个tag把它清光 cache.clear("test_all");
5.缓存更新
这个极少用(需要单项更新的缓存,建议用redis)
db.table("test").where("id=?",10) .caching(cache).cacheTag("test_"+10) .select("*").getItem(UserModel.class); cache.update("test_"+10,(UserModel m)->{ m.sex = 10; return m; });
框架的缓存控制,也是极为自由的哟。应该是的吧?哈合。
org.noear.weed.cache.EmptyCache // 空缓存
org.noear.weed.cache.LocalCache // 轻量级本地缓存(基于Map实现)
org.noear.weed.cache.SecondCache // 二级缓存(组装两个 ICacheServiceEx 实现)
org.noear.weed.cache.ehcache.EhCache // 基于ehcache封装
<dependency> <groupId>org.noear</groupId> <artifactId>weed3.cache.ehcache</artifactId> <version>3.2.1.1</version> </dependency>
org.noear.weed.cache.j2cache.J2Cache // 基于国人开发的J2Cache封装
<dependency> <groupId>org.noear</groupId> <artifactId>weed3.cache.j2cache</artifactId> <version>3.2.1.1</version> </dependency>
org.noear.weed.cache.memcached.MemCache // 基于memcached封装
<dependency> <groupId>org.noear</groupId> <artifactId>weed3.cache.memcached</artifactId> <version>3.2.1.1</version> </dependency>
org.noear.weed.cache.redis.RedisCache // 基于redis封装
<dependency> <groupId>org.noear</groupId> <artifactId>weed3.cache.redis</artifactId> <version>3.2.1.1</version> </dependency>
也可以自己封装个 ICacheServiceEx ...
到此,相信大家对“weed3-2.3.3.查询的缓存控制是什么”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。