Oracle Coherence是否支持批量删除操作?

时间:2015-01-07 16:53:03

标签: c# oracle oracle-coherence

已删除,因为没有答案就足够了。

3 个答案:

答案 0 :(得分:0)

我想你想要AbstractCacheStore.eraseAll(Collection colKeys)

From the documentation:

  

如果要实现读/写缓存,则必须扩展com.tangosol.net.cache.AbstractCacheStore(或实现接口com.tangosol.net.cache.CacheStore),这会添加以下方法:

public void erase(Object oKey);
public void eraseAll(Collection colKeys);
public void store(Object oKey, Object oValue);
public void storeAll(Map mapEntries);
     

方法erase()应从外部数据源中删除指定的密钥。方法store()应该更新数据源中的指定项(如果它存在),或者如果它当前不存在则插入它。

     

实施CacheLoader / CacheStore后,可以通过一致性cache-config.xml文件进行连接。

答案 1 :(得分:0)

根据this文档,这是您需要的正确 C#界面

  

AbstractCacheStore.EraseAll方法:

     

从底层商店中删除指定的密钥(如果存在)。

     

命名空间

     

Tangosol.Net.Cache程序集:Coherence(在Coherence.dll中)   版本:12.1.2.0(12.1.2.0)折叠imageSyntax

     

public void EraseAll(ICollection键)

     

此方法的实现为每个键调用 Erase(Object)   提供的ICollection。成功擦除后,将删除一个键   来自ICollection(如果可能的话)。注意:对于许多类型的持久性   存储器,单个擦除操作与批量擦除一样昂贵   操作;因此,子类应该覆盖此方法if   可能的。

通过在每个值上调用Erase,即使是删除整个集合的底层API也会这样做。虽然,Oracle Coherence是一个内存缓存,但它实际上并没有通过线路超过10,000次来擦除密钥,而是在内存中访问它。

答案 2 :(得分:0)

cache.InvokeAll(filter, new ConditionalRemove(AlwaysFilter.INSTANCE));  

cache.InvokeAll(colKeys, new ConditionalRemove(AlwaysFilter.INSTANCE));