当前位置: 首页 > 知识库问答 >
问题:

在Spring Boot应用程序中清除远程Redis缓存

裴英锐
2023-03-14

我正在使用Spring Boot 2.3,并使用默认缓存机制使用app.properties.我定义了所有值:

spring.cache.type = redis
spring.redis.host = host
spring.redis.port = port
spring.redis.timeout = 4000
spring.redis.password = psw
spring.cache.redis.time-to-live = 28800000

例如,我利用了Spring存储库中的缓存:

    @Cacheable(cacheNames = "contacts")
    @Override
    Page<Contact> findAll(Specification specification, Pageable pageable);

它按预期工作。然而,Redis是我的几个应用程序中使用的集群,我需要第二个应用程序能够删除Redis中的一些/所有键。

应用程序A1利用缓存并将密钥放在里面。应用程序A2,需要清除部分密钥或所有密钥。

在A2中,我做到了:

cacheManager.getCacheNames().forEach(cacheName -> cacheManager.getCache(cacheName).clear());

但是当然,缓存名称列表是空的,因为在这个应用程序中,我没有向缓存添加键,而且无论如何,我没有A1的相同键。我应该列出远程键,然后我需要清除它们。有没有一种不使用Spring Data Redis库的简单方法?

共有1个答案

姬翰林
2023-03-14

您可以在Redis中为整个缓存定义一个单独的前缀。类似于缓存项的命名空间。然后可以刷新此命名空间中的所有键。

注意:确保CacheManager只有Redis缓存,没有内存缓存(L1)。

 类似资料:
  • 在应用程序(Spring引导服务)启动时,需要清除Redis缓存。 Redis运行在另一个docker容器中,该容器具有自己的卷映射。因为它保留了旧的缓存,所以即使在应用程序重新启动后,应用程序也会从Redis缓存而不是数据库中拾取数据 > 尝试了的,但它从未被调用。 在Application ationMain类中尝试了,但是它没有清除缓存。 尝试使用,但仍然没有运气 @组件公共类应用程序启动{

  • 更新我的Android应用程序的www文件夹(使用Cordova 3.6.3)时,该应用程序会显示我的www的旧缓存版本。 如果我清除应用程序数据(来自Android- 当应用程序更新时(或每次应用程序启动时),如何强制应用程序清除缓存?

  • 问题内容: 我想编写一个实用程序,用户可以在其中选择一组已安装的应用程序并清除其数据缓存,例如,您可以使用内置的“设置”->“应用程序”设置屏幕中的“清除缓存”按钮来手动执行此操作。 如何访问每个应用程序具有多少缓存数据并以编程方式清除这些缓存? 问题答案: 普通的SDK应用程序无权访问(更不用说修改)其他应用程序的缓存了,甚至无权修改您的文件。 在具有以root用户身份运行的应用程序的有根电话上

  • 我的问题出在这里: 因为方法deleteApplicationCacheFiles为null,所以会显示我的toast消息。有什么建议吗?

  • 如何在PhoneGap应用程序中以编程方式清除应用程序数据。场景中,在用户身份验证后,如果他未获得授权,我需要从应用缓存中清除他的凭据。 任何输入?