+
 新版

使用Spring3.1注解 缓存 模糊匹配Evict的问题

就是不着调 发布于 2012/05/12 17:41
阅读 2K+
收藏 0

最近用到Spring 3.1的注解cache.

比如说

@Cacheable(value="posts",key="'getPosts_'+#blogId+'_'+#firstindex+'_'+#maxresult")
	public QueryResult<Posts> getPosts(Integer blogId, int firstindex,int maxresult) {
		...
	}

此时是进行分页的缓存, 表示查询的是blog为id的用户下从firstindex开始一共maxresult条博客文章记录.

但是如果该用户添加或修改了一篇文章 那么这个缓存就要evict.

public void update(Posts post) {
		baseDao.update(post);
	}

blogId我可以使用Spring el 【#post.blog.id】拿到,这个时候我要清理缓存就要进行模糊的匹配

类似于这样的

@CacheEvict(value="posts",key="'getPosts_'+#post.blogs.id+'_*'"),

 就是把【#firstindex+'_'+#maxresult】换成了【*】.但是Spring EL不支持这样的写法.

查了文档也没看到Spring EL支持*匹配的.

不知道怎么个写法能解决这个问题,或者说换个换个缓存的思路?

加载中
0
王振威
王振威
我之前也遇到过一个多条件查询的缓存问题,后来的解决办法就是做成定时evict的
0
就是不着调
就是不着调

引用来自“王振威”的答案

我之前也遇到过一个多条件查询的缓存问题,后来的解决办法就是做成定时evict的
不用spring了 结合ehcache自己写个了.
0
新人王
新人王
嘿,你还别说,这真是一个问题。。。
0
新人王
新人王
不过这里的*是乘号的意思
0
绝望的八皮
绝望的八皮
我也是因为这个问题自己仿造spring实现了一个这个玩意儿。 自己定义一个表达式解析的策略。
0
f
fgod
(⊙o⊙)… 不知道能看到不,新手学spring缓存这一块,我也觉得在新增和修改的时候对列表请求做匹配式的evict更合理,求教!!
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部