2

我正在使用以下唯一键缓存几个请求...我正在使用内存中缓存。

urn:Product:/site.api.rest/product?pagenumber=0&pagesize=0&params=<Product><ProductID>3</ProductID></Product>
urn:Product:/site.api.rest/product?pagenumber=0&pagesize=0&params=<Product><ProductID>1</ProductID></Product>
urn:Product:/site.api.rest/product?pagenumber=0&pagesize=0&params=<Product><ProductID>5</ProductID></Product>
urn:Product:/site.api.rest/product?pagenumber=0&pagesize=0&params=<Product><ProductID>3</ProductID><Description>test</Description></Product>
...
...

现在,在创建/更新/删除中,我想删除特定的缓存(基于请求正文中传递的参数,例如所有 3.

为了做到这一点,我将从请求参数中获取 singleNode(例如:3)。

我怎样才能?

Get all cache objects which matches <ProductID>3</ProductID> and remove it?
Also, what is the right approach to remove cache?
    base.RequestContext.RemoveFromCache(base.Cache, cachekey);
    or
    CacheClient.Remove(keyname)?
4

1 回答 1

1

有一种更好的方法,那就是使用分代缓存。

当你构造你的缓存键时,包括一个世代号,例如

瓮:产品:gen_1 :/site.api.rest/product?pagenumber=0&pagesize=0¶ms=

(这个数字可以作为一个计数器存储在您的缓存服务中。)

然后,当您想要(伪)使大量缓存项无效时,只需增加代号即可。

只需确保在缓存项目上设置到期日期,以便随着时间的推移清理老一代。

于 2013-09-11T13:43:54.773 回答