gpt4 book ai didi

java - Spring Cache 从值中获取键

转载 作者:行者123 更新时间:2023-11-29 04:17:31 26 4
gpt4 key购买 nike

我在 spring boot 应用程序中使用 spring cache 来存储针对某个键的值。我现在有了值,是否可以根据值从缓存中获取 key ?如果是这样请帮助。

我尝试使用有关 net.sf.ehcache.Cache 的解决方案,但由于某种原因它没有显示任何导入建议并给出错误 net.sf.ehcache.Cache cannot be resolved到一个类型。我是 spring cache 的新手,所以不知道该怎么做。

我项目中的依赖是

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>

<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>

<dependency>
<groupId>javax.cache</groupId>
<artifactId>cache-api</artifactId>
</dependency>

我使用的代码是

public String getEmailByOtp(String otp)
{
String email = "";
Ehcache cache = (Ehcache) CacheManager.getCache("otpCache").getNativeCache();
for (Object key: cache.getKeys()) {
Element element = cache.get(key);
if (element != null) {
Object value = element.getObjectValue(); // here is the value
if(value.equals(otp)) {
email = key.toString();
}
}
}

return email;

}

最佳答案

Spring CacheEhCache是缓存机制的两种完全不同的实现。虽然有一种方法可以将基于 Spring 的缓存转换为基于 EhCache 的缓存,但这并不意味着 Spring 会自动提供其实现。您必须导入 EhCache 库(使用 Maven、Gradle 等)。

给你。你得到一个 net.sf.ehcache.EhCache 的实例,它包含来自 Spring org.springframework.cache.CacheManager 的所有缓存区域。 .

EhCache cache = (EhCache) CacheManager.getCache("myCache").getNativeCache();

然后,就不可能像使用 Map 那样直接访问所有值。遍历键并获取与键匹配的特定元素。这样您也可以遍历所有值。

for (Object key: cache.getKeys()) {
Element element = cache.get(key);
if (element != null) {
Object value = element.getObjectValue(); // here is the value
}
}

我还没有测试过这些片段,但是,我希望你能理解。

关于java - Spring Cache 从值中获取键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51386082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com