代码拉取完成,页面将自动刷新
同步操作将从 qiujiayu/AutoLoadCache 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
下面商品评论的例子中,如果用户发表了评论,要所有涉及到的前端页面立即显示该如何来处理?
package com.jarvis.example.dao;
import ... ...
public class GoodsCommentDAO{
@Cache(expire=600, key="'goods_comment_list_'+#args[0]", hfield = "#args[1]+'_'+#args[2]", autoload=true, requestTimeout=18000)
// goodsId=1, pageNo=2, pageSize=3 时相当于Redis命令:HSET goods_comment_list_1 2_3 List
public List<CommentTO> getCommentListByGoodsId(Long goodsId, int pageNo, int pageSize) {
... ...
}
@CacheDelete({@CacheDeleteKey(value="'goods_comment_list_'+#args[0].goodsId")}) // 删除当前所属商品的所有评论,不删除其它商品评论
// #args[0].goodsId = 1时,相当于Redis命令: DEL goods_comment_list_1
public void addComment(Comment comment) {
... ...// 省略添加评论代码
}
@CacheDelete({@CacheDeleteKey(value="'goods_comment_list_'+#args[0]", hfield = "#args[1]+'_'+#args[2]")})
// goodsId=1, pageNo=2, pageSize=3 时相当于Redis命令:DEL goods_comment_list_1 2_3
public void removeCache(Long goodsId, int pageNo, int pageSize) {
... ...// 使用空方法来删除缓存
}
}
在一些用户交互比较多的系统中,使用程序删除缓存是非常常见的事情,当我们遇到一些查询条件比较复杂的查询时,我们没有办法通过程序,反向生成缓存key,也就无法精确定位需要删除的缓存,但我们又不希望把不相关的缓存给误删除时。这时就可以使用下面介绍的批量删除缓存功能。
注意:批量删除缓存功能,现在只有Reids 和 ConcurrentHashMap两种缓存方式支持。Memcache无法支持。
批量删除缓存,主要和存缓存的方式有关,我们把需要批量删除的缓存,放到对应的hash表中,需要批量删除时,把这个hash表删除就可以了,实现非常简单(因为Memcache不支持hash表,所以无法实现这种方式的批量删除缓存功能)。所以批量删除缓存,是因缓存缓存数据的方式改变了,才得以实现的。
使用方法,参照上面删除商品评论的代码。在@Cache中加入hfield。
另外Reids还支持使用通配符进行批最删除缓存,但不建议使用。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。