缓存数据如何全部取出?

业务场景:统计文章的点击次数。

实现思路:

    1.点击文章时,以文章id为key,点击次数作为value,存入缓存。

    2.定时任务,每隔10分钟,从缓存中取出文章的阅读点击次数,存入数据库。

那么问题来了,现在看到的只有一个方法可用:

CacheKit.get(DicUtil.CACHE_READTIMES, id ) ; 


那么定时任务启动时,难道要把所有的文章都从数据库取出id进行遍历,根据id来从缓存中取出点击次数,然后更新吗?
这样是不是太笨了一点?
能不能把DicUtil.CACHE_READTIMES作为缓存key的缓存组里面的数据都取出,然后遍历呢?


评论区

JFinal

2017-03-12 11:42

用一下 CacheKit.getKeys(DicUtil.CACHE_READTIMES) 得到所有的 key,也就是 id 的集合,然后再对这些 id 进行循环处理

注意看一下 jfinal-club 项目中的 pageview 模块,里面现成的代码可用

chcode

2020-05-26 17:32

@JFinal ICache接口没有定义getKeys方法,如何使用其他缓存组件自己定义的MyCache实现ICache接口 则没有办法获取到所有的keys

chcode

2020-05-26 17:36

@JFinal 所以这个CacheKit 准确上来说应该是EhCacheKit才对

JFinal

2020-05-26 17:38

@chcode 这个是作为 jfinal 的 plugin 存在的,不算内核, 所以可以自己参考着写一个自己喜欢的 cache , 或者使用第三方的 cache

注意 ActiveRecord 模块中依赖的 cache , 也是依赖其自身定义的接口

热门反馈

扫码入社