paginateByCache 缓存key如何设置比较好?

使用分页缓存,目前做法是将整条sql语句进行char数组化,排序后md5,生成一串32位的字符串作为缓存key。因为分页缓存,经常会动态添加多个查询条件。目前在service中有什么方法可以直接获取整条的sql吗?

不过上面方法只适合查询,不适合需要更改的缓存

或者有什么更好的方式可以当作缓存key。

评论区

lyq027

2018-05-27 17:09

目前我的做法是将手动所有参数相连接,然后char数组化,排序后md5,当作key。比较理想的状态是直接将查询sql,md5后当作缓存key。这样只要sql上的参数不变,就能直接获取到缓存

JFinal

2018-05-27 22:03

总体上来说,保障 key 的唯一性就可以了,参数直接 toString() 以后做 md5 是一个很好的办法,比 md5 更快的办法是直接使用 StrKit 中的 fnv64 算法来做

更改缓存可以简单让这个 cacheName 失效就可以,如果要精确控制 page 里头的某个 model 会很麻烦,不建议这么做

lyq027

2018-05-28 09:20

@JFinal 建议是否在Db或model中暴露出获取完整带赋值的sql的方法。这样可以很方便测试

JFinal

2018-05-28 09:52

@lyq027 啥意思, show me the code