【问题标题】:Redis keys command not showing all keysRedis 键命令未显示所有键
【发布时间】:2020-02-29 16:03:05
【问题描述】:

我使用 redis 作为我的缓存层,在这方面,我有很多地方在我的不同服务和层中使用 @Cacheable。

这里是示例代码:

@Cacheable(value = "my_detail", key = "'m_detail_'+#entityIdd")
public InstituteDetail getMyDetail(Long entityId) {

    call1();
    call2()
}

@Cacheable(value = "call_1", key = "'call_1'+#entityIdd")
public InstituteDetail getMyDetail1(Long entityId) {

    //some code
}

@Cacheable(value = "call_2", key = "'call_2'+#entityIdd")
public InstituteDetail getMyDetail2(Long entityId) {

    //some code
}

应用程序和缓存工作正常,但是当我使用以下命令获取 redis-cli 中的所有键时:

keys *

它只显示 call_1 和 call_2 的键。 并且不显示“my_detail”的键。

这很奇怪,没有得到解决。任何建议这里有什么问题。

【问题讨论】:

    标签: java caching redis cache-control jedis


    【解决方案1】:

    生成了一个代理类,拦截所有请求并以缓存值响应,只拦截通过代理传入的外部方法调用。这意味着在目标对象中调用同一目标对象的另一个方法,即使调用的方法标记为@Cacheable,也不会导致运行时实际的缓存拦截。

    因此如果方法调用同一类的其他方法,则不能将值“my_detail”存储在缓存中

    【讨论】:

      猜你喜欢
      • 2018-05-12
      • 2021-12-18
      • 2013-07-07
      • 2012-08-20
      • 1970-01-01
      • 2022-10-24
      • 2020-01-23
      • 1970-01-01
      • 2011-12-26
      相关资源
      最近更新 更多