【问题标题】:Invalidate entire namespace using Simple Spring Memcached使用 Simple Spring Memcached 使整个命名空间无效
【发布时间】:2019-12-18 16:57:43
【问题描述】:

有没有人尝试过使整个 memcached 命名空间无效?

例如,我有两个读取方法具有不同的键

@Override
@ReadThroughSingleCache(namespace = UrlClientExclusion.TABLE_NAME, expiration = 24 * HOUR)
public List<UrlClientExclusion> list(@ParameterValueKeyProvider String idClient) {

@Override
@ReadThroughSingleCache(namespace = UrlClientExclusion.TABLE_NAME, expiration = 24 * HOUR)
public UrlClientExclusion find(@ParameterValueKeyProvider int idUrlClientExclusion) {

我想在更新/删除操作时删除整个命名空间 UrlClientExclusion.TABLE_NAME

我不能使用 keylist 方法,因为应用程序的实例很多

@InvalidateMultiCache(namespace = UrlClientExclusion.TABLE_NAME)
public int update(UrlClientExclusion urlClientExclusion, /*@ParameterValueKeyProvider List<Object> keylist*/ /* it is impossibile for me put all keys in this list*/) {

所以解决方案是删除整个命名空间。

这样做的注释是什么? 是否可以构建自定义注释来删除整个命名空间?怎么样?

非常感谢

【问题讨论】:

    标签: java memcached spring-annotations simple-spring-memcached


    【解决方案1】:

    Memcached 不支持命名空间,SSM 提供命名空间作为逻辑抽象。不可能从给定的命名空间中刷新所有键,因为 memcached 不会将键分组到命名空间中。 Memcached 仅支持刷新/删除单个键或所有键。

    您可以从 memcached 实例中刷新所有数据,或者需要提供应该删除的确切键。

    【讨论】:

    • 我解决了使用 Spring AOP 组件。我使用自定义注释对方法“更新”进行注释,并创建一个在调用带注释的方法后执行的 ASPECT。创建这个切面是为了在方法调用后刷新缓存
    • 请记住,在 memcached 缓存的情况下,无论使用 SSM 还是 Spring Cache/AOP,都不支持刷新命名空间。 Memcached 只能按名称刷新(删除)单个键、按名称或所有键的多个键。
    【解决方案2】:

    我不知道如何使用 simple-spring-memcached 库来处理这个问题。但我建议您改用Spring's Cache Abstraction。通过这种方式,您可以将缓存存储更改为您的偏好之一,例如ConcurrentHashMapEhcacheRedis 等。这只是您的应用程序的配置更改。对于命名空间的逐出,您可以执行以下操作:

    @CacheEvict(cacheNames="url_client_exclusion", allEntries=true) 
    public int update(...)
    

    很遗憾,Pivotal 并未提供对 Memcached 的官方支持,但如果您确实需要使用 Memcached,可以查看符合 Spring Cache Abstraction 的 Memcached Spring Boot 库。

    有一个示例 Java 应用程序,您可以在其中了解如何使用此库。在那里您还可以找到@CacheEvict 用法的示例 (link)。

    【讨论】:

    • 谢谢。我以其他方式解决,始终使用 Spring AOP 刷新缓存
    猜你喜欢
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 2015-08-29
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多