gpt4 book ai didi

java - CRUDRepository 的 Spring Data Redis 问题

转载 作者:行者123 更新时间:2023-12-05 05:57:18 28 4
gpt4 key购买 nike

我和我的团队正在使用带有 Redis 的 CRUD 存储库对其执行一些操作。问题是 Redis 中有一个条目作为索引生成,该索引存储与 Redis 条目关联的键,并且该条目永远不会删除 TTL 达到 0 时已经刷新的条目。

这是我们使用的代码示例。

@RedisHash("rate")
public class RateRedisEntry implements Serializable {
@Id
private String tenantEndpointByBlock; // A HTTP end point
...
}

// CRUD repository.
@Repository
public interface RateRepository extends CrudRepository<RateRedisEntry, String> {}

这会在 Redis 中生成条目 rate,这是我之前提到的 Set 对象。

当我们检查它的内存使用情况时,它一直在增长,直到内存使用量达到 Redis 可用内存的 100%。'

> MEMORY USAGE "rate"
(integer) 153034
.
.
> MEMORY USAGE "rate"
(integer) 153876
.
.
> MEMORY USAGE "rate"
(integer) 163492

有没有办法阻止创建此索引或在条目的 TTL 达到 0 时删除存储的值?

感谢任何帮助。

最佳答案

我找到了解决问题的可能方法。您可以设置存储库选项来跟踪条目的 TTL 达到 0 的事件。

@EnableRedisRepositories(enableKeyspaceEvents 
= EnableKeyspaceEvents.ON_STARTUP)

这将使 Spring Data Redis 跟踪刷新的条目,因此它会更新作为索引的条目。

但是,这会在您的系统上引入一些额外的处理,因此您应该意识到这一点并评估使用 RedisRepository 是否有意义。

在我们的案例中,我们决定直接使用 RedisTemplate 类,以避免任何额外的开销或不受控制的处理。

如果您有兴趣了解我们如何修复它的所有细节,您可以阅读我写的这篇关于它的文章。

https://engineering.salesforce.com/lessons-learned-using-spring-data-redis-f3121f89bff9

关于java - CRUDRepository 的 Spring Data Redis 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68854213/

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