我有一个使用休眠模式的Spring Boot应用程序。我想运行此应用程序的多个实例,这些实例连接到同一数据库。我不小心偶然发现了infinispan作为二级缓存。我想将infinispan实现为休眠的第二级缓存。现在,如果我启动了同一个Spring Boot应用程序的多个实例,是否将彼此共享所有不同实例的infinispan缓存?
答案 0 :(得分:1)
我发现使用Spring Boot在多台计算机之间共享缓存的最好方法是使用Redis。
您只需要定义要使用的Redis服务器,在配置中定义正确的RedisTemplate
,然后使用@Cacheable
批注即可使用您提供的参数将结果存储在Redis中。键。所有实例将共享相同的缓存源。
如果您的Redis和其他实例的延迟很慢,就会出现问题,这将导致缓存系统变慢,并且保留实例内存可能更有趣。 但是,如果服务器与Redis的位置足够近,它应该是一个很大的改进,并且对于可伸缩性目的非常有用,它可以减轻数据库的压力:-)
这篇精美的论文中的更多信息:https://medium.com/@MatthewFTech/spring-boot-cache-with-redis-56026f7da83a
答案 1 :(得分:1)
与Hibernate 2级缓存一起使用的默认Infinispan配置将导致每个实例尝试彼此查找。为此,他们需要先通过UDP多播找到彼此,然后才能通过TCP相互通信。
我们有an Spring Boot Hibernate Cache example that uses Infinispan可以覆盖此配置,以用于单个实例。
如果您评论this line,Infinispan将使用clustered configuration。