问题标签 [spring-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4491 浏览

spring - 缓存最佳实践 java

我有一个基于 Struts 的 B2B 应用程序。一个页面中可以有 20-25 个列表框,列表框中的数据可能因客户而异。例如,列表框将是合格国家列表、产品品牌列表等。一个客户下会有多个用户。在当前的解决方案中,当客户下的第一个用户登录时,客户对象被设置在应用程序范围(ServletContext)中。这种方法是为了避免在页面加载时调用数据库。

我们正在寻求重新构建解决方案,预计客户群将增长 50%。新应用程序将在带有 Hibernate-JPA 的 Spring 框架上,最后应用程序将部署在 JBoss 集群上。为处理列表框数据的最佳缓存方法寻找专家意见。

谢谢你。

0 投票
1 回答
1332 浏览

java - memchache 不工作时如何处理代码(simple-spring-memcached)

感谢“simple-spring-memcached”中的“入门指南”,我设法使用指南中的“Spring 3.1”示例让 memcached 在我的项目中工作,我使用“spymemcached”作为提供者。当 memcached 服务器启动并运行时,一切正常。但是,当无法访问 memcache 服务器(故意关闭以进行测试)时,下划线代码不起作用并且应用程序不会执行,只是抛出运行时异常,说明无法连接到 memcache 服务器并发生超时。

但是,在这种情况下,我期望的是每次都执行目标方法,因为缓存无法访问,而不是完全阻塞执行路径。这可以使用简单的 spring memcache 吗?,有没有人有这方面的经验?我该如何解决这种情况,缓存层的任何异常都不需要干扰执行,只需调用目标方法作为后备。这就是我想要达到的目标。

我用'fallbackToNoOpCache'尝试了spring'CompositeCacheManager',但看起来simple-spring-memcached对此没有影响。

我所有的配置都与(spring 3.1)完全相似

https://code.google.com/p/simple-spring-memcached/wiki/Getting_Started

谢谢你的帮助

例如:我的@Cacheable 的用法是

0 投票
2 回答
1461 浏览

spring - @Cacheable:如何传递可以在我自己的 KeyGenerator 中使用的新属性?

我需要你的专业知识:)

我正在开发一个需要对服务上的方法调用进行身份验证的应用程序。这意味着我希望每个方法调用都使用包含用户名的密钥进行缓存(以避免未经授权的用户检索由授权用户缓存的信息)。

使用个性化的 KeyGenerator,一切正常。

我的密钥示例:username:USERNAME.appVersion:VERSION.METHOD.PARAM1.etc

但是在某个位置,我得到了检索国家内容的方法:每个用户都将使用相同的方法。而且我想避免为每个要求此内容的用户使用缓存键。

示例:appVersion:VERSION.METHOD.PARAM1.etc

所以当我定位我的@Cacheable 注释时,有没有办法在其中设置一个新参数?密钥生成器将能够捕获它并知道他是否必须在缓存密钥名称前加上用户信息。

谢谢你的帮助 :)

小心

0 投票
1 回答
1682 浏览

java - Spring Cache:使用 memcached 作为分布式缓存

对于许多 java 服务,我们使用 AWS ElastiCache 作为由 Spring Cache 抽象和 spymemcached 集成的分布式缓存。

在一项服务中,我看到我得到的结果类型与我预期的不同,导致 ClassCastException。准确地说:我有一个缓存键,因此我期望一个列表,但我得到的是 Type2 的结果。

我们定义了许多缓存,其中一些使用相同的缓存键:

由于它们位于不同的缓存中,因此当我们使用简单的基于 hashmap 的缓存时,这很有效。但是,对于 ElastiCache/Memcached,我们似乎并没有真正的不同缓存(从我对 memcached 的了解来看,这很有意义——这并不多)。

我本来希望 spymemcached 通过操作缓存键来解决这个问题,这样应用程序就不需要知道实际的缓存实现(这可以通过操作缓存键并在它们前面加上缓存名称 ie 来完成)。

从一些调试会话和我看到的错误来看,情况似乎并非如此。

我专门研究了这个类:

com.google.code.ssm.spring.SSMCache

我本来希望 getKey() 方法以缓存名称为前缀。

所以我的问题是:

  1. 我是否正确理解这里发生了什么?
  2. 是否可以使用 spymemcached 进行配置以使其以预期的方式运行?

此外,任何其他想法都可以接受!谢谢!

0 投票
1 回答
3171 浏览

amazon-elasticache - 如何将 simple-spring-memcached 与 AWS Auto Discovery 一起使用

如何将 simple-spring-memcached 库 (SSM) 与 AWS Elasti Cache Auto Discovery 功能结合使用?我们使用 spymemcached 作为客户端。

0 投票
2 回答
10380 浏览

java - 如何为使用 Spring Cache 缓存的 Spring Web Service 设置正确的 Last-Modified 标头值?

我有这样的 Spring MVC 控制器:

我想将标头 Last-Modified 添加到 GetUser Web 服务的 HTTP 响应中。
当缓存添加到我的商店时,如何获得正确的日期?
如何将标头 Last-Modified 与此日期一起添加到我的 Spring 控制器方法的响应中?

0 投票
2 回答
9089 浏览

spring - Spring缓存密钥生成器

我刚刚开始研究 Spring 缓存。

我的服务方式是...

没有 key 子句,不会抛出异常,并假定两个参数都自动生成以进行缓存,但使用 key,当我调用此方法时,抛出异常为...

搜索文档但没有线索。希望有人能解决这个问题。

0 投票
1 回答
353 浏览

spring - 在云端使用 org.springframework.cache.support.SimpleCacheManager

我注意到 Spring 参考应用程序 (Sagan) 使用了该SimpleCacheManager实现。有关 Sagan 的源代码,请参见此处

我对这个选择感到惊讶,因为我认为除了在单个节点上运行的小型应用程序之外,所有应用程序都将使用 Redis 缓存管理器之类的东西,而不是简单的缓存管理器。

像 Sagan 这样的大型应用程序(我假设它在 cloudfoundry 上运行)如何使用这个简单的实现?

欢迎任何评论。

0 投票
1 回答
2290 浏览

java - Spring 缓存不适用于 EHCache+JCache

我正在尝试将 jcache 的 ehcache 实现集成到 spring 中。所以我有一个这样定义的外观:

和一个基于 java 的配置,如下所示:

以及调用门面 10 次的测试:

但结果是通过该方法 10 次:

你可以在这里找到一个示例项目来重现它: https ://github.com/paranoiabla/spring-cache-test

0 投票
1 回答
1079 浏览

spring - 使用 Spring Caching 为多个 Web 应用程序配置单例 CacheManager

我在 Tomcat 中部署了多个 Web 应用程序,并且在 TOMCAT_HOME/lib/ext 中共享了服务 jar。所有应用程序都使用 Spring,在服务 jar 中我有 bean,使用 Spring 3.1 Caching annotations 进行注释。我正在使用 Ehcache 提供程序。我希望所有 Web 应用程序都使用一个 CacheManager。如果我在 Web 应用程序级别定义 spring 缓存配置,缓存会起作用,但会为每个应用程序/上下文创建单独的 cacheManager。“共享”缓存管理器会导致问题,因为如果这些应用程序之一被取消部署,则此共享缓存管理器将关闭。所以我想要一个 CacheManager ,在我的服务 jar 中配置,并用于对来自 Web 应用程序的 bean 进行的所有方法的调用。我目前的尝试是在 service.jar 的 applicationContext.xml 中定义以下配置:

我已经通过 beanRefContext.xml 定义了父应用程序上下文:

我使用这个上下文作为我所有的 web 应用程序的父上下文,在 web 应用程序的 web.xml 中具有以下 contextParam:

结果是这个parentContext被加载了,但是缓存根本不起作用我该如何解决这个问题?我在 service.jar 中定义 parentContext 的方式是否正确?