问题标签 [spring-data-redis]

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 投票
0 回答
1356 浏览

java - 在 Spring Data Redis 中启用缓存

我试图实现 Spring 数据 redis 并试图启用缓存。但我认为我做错了什么。我什至尝试过阅读文档并进行以下操作,但仍然无法做到这一点。我对 Spring Data Redis 很陌生。我正在使用 1.5.1-RELEASE 和 jedis 2.6.2。这是我添加单词的功能:

这是一个用于检索:

这是我对实现的理解,首先缓存将被命中,如果找到结果,则获取该结果,否则从redis中取出单词并将其存储在缓存中。这是异常堆栈跟踪:

线程“main”中的异常 org.springframework.dao.InvalidDataAccessApiUsageException: WRONGTYPE 对持有错误值的键的操作;嵌套异常是 redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE 对在 org.springframework.data.redis.connection.jedis.JedisExceptionConverter.convert(JedisExceptionConverter.java:44) 处持有错误类型值的键进行操作。 springframework.data.redis.connection.jedis.JedisExceptionConverter.convert(JedisExceptionConverter.java:36) 在 org.springframework.data.redis.PassThroughExceptionTranslationStrategy.translate(PassThroughExceptionTranslationStrategy.java:37) 在 org.springframework.data.redis.FallbackExceptionTranslationStrategy。在 org.springframework.data 上翻译(FallbackExceptionTranslationStrategy.java:37)。

谁能告诉我,我做错了什么?或者如果我也需要在将记录放入 redis 之前启用缓存?

0 投票
0 回答
131 浏览

java - Spring-data-redis:几个小时后神秘地停止工作

我有一个使用 spring-data-redis 的后端进程。与retwis clone类似,它使用StringRedisTemplate。在我的 Digital Ocean droplet 上运行大约 3-4 小时后,它神秘地停止了持久化新密钥。我的日志表明我的 redis 持久性代码正在被调用,它只是在 spring-data-redis/jedis 层以某种方式停止工作,没有任何错误迹象。

到目前为止已完成故障排除

  1. 我有足够的内存。Redis 只用了 6mb。

  2. 我重新启动了后端进程,一切都再次按预期工作,正在插入键值。

  3. 我检查了 redis-server.log。这与我对 spring-data-redis/jedis 失败的假设一致。这些条目在我插入最后一个密钥的同时停止。2015 年 8 月 9 日的条目是它神秘失败的时候。第二天,2015 年 8 月 10 日的条目是我重新启动它的时间。

    /li>
  4. 我自己的应用程序日志没有显示异常。spring-data-redis 和 jedis 也没有记录器。所以他们没有抛出异常(因为我没有捕捉到任何异常)并且他们没有日志输出。显然,正在向 spring-data-redis 发出请求,并且 spring-data-redis 毫无例外地返回到我的代码。

故障排除的后续步骤?

spring-data-redis 及其底层 redis 驱动程序“Jedis”中的日志记录量非常少。我已经在 2 上启用了日志记录,看看当/如果问题再次发生时是否有帮助。

我也考虑过调试它,但我认为此时宁愿切换到不同的驱动程序/项目。

0 投票
2 回答
8967 浏览

java - 无法在 Redis 模板中加载连接工厂,也无法找到 spring config xml

我正在开发一个 Spring-MVC 应用程序,我想在其中将 Redis 用于 Redis 键值对中的字符串和整数值。我的意图是在传递字符串时检索整数。当我试图检查我正在尝试的配置是否正确时,我收到了一个错误。

我有 2 个问题,当我尝试运行项目以查看我的配置是否正确时出现错误(错误日志发布在下面)。其次,除了传递XML文件并获取上下文之外,我不知道如何从spring中获取UserAppRegistration实例。这种方法对我不起作用。

错误日志:

组件类。请注意我在服务文件夹中有这个类:

root-context.xml 中的 Redis 配置:

现在,我想检索 UserAppRegistration 组件以从中推送和拉取值。建议的方式是这样的:

出于某种原因,这种方式以前从未对我有用。xml 永远找不到,我尝试了很多路径。如果有更好的选择,我想知道。非常感谢。如果需要更多信息,请告诉我。非常感谢。

0 投票
1 回答
268 浏览

java - 从 Redis 中检索 Person 对象而不提供哈希码

我正在开发一个 Spring-MVC 应用程序,我在 Redis 中插入了一个 Person 对象。现在插入对象时,我还需要为检索到的 Person 提供 hashCode 值。有什么办法,我可以在不传递 hashCode 的情况下检索 Person 对象,只是关键部分。请告诉我。这是插入代码:

插入代码:

检索代码:

此时我无权访问我插入的人的哈希码。我怎样才能只使用键检索 Person 对象。非常感谢。:-)

0 投票
0 回答
471 浏览

xml - application-context.xml中的spring数据redis主从配置

我已经通过使用 jedis 连接工厂和 redis 模板对 spring 数据 redis 进行了 poc,它工作正常,并且使用单个节点快速获得结果,但现在我想使用 master 写入和 child 读取以提高读取性能,任何人都可以帮我在 applicationcontext.xml 中配置这些信息。

0 投票
1 回答
6011 浏览

java - 使用 Spring Data Redis 的 Redis Pub/Sub:消息以错误的顺序到达

我正在尝试使用带有 Spring Data Redis 的 Redis 发布/订阅来实现聊天。

我使用 RedisTemplate 发布消息,如下所示:

为了接收消息,我有一个 MessageListener,如下所示:

消息是这样发布的:

但是,收到的消息似乎以错误的顺序传递:

是否可以使用 Spring 提供的 RedisTemplate/MessageListener 同步发送/接收消息?

当前的代码库很小,可以在GitHub 上查看。

0 投票
1 回答
1206 浏览

java - Spring Data Redis:我怎么知道 MessageListener 准备好了?

根据文档RedisMessageListnerContainer-

public void addMessageListener(MessageListener listener, Topic topic)

将消息侦听器添加到(可能正在运行的)容器中。如果容器正在运行,则侦听器会尽快开始接收(匹配)消息。

上面的引用似乎表明没有真正的方法知道侦听器何时准备好 - 或者订阅是否成功。

那么,鉴于我发布和订阅了一个频道 - 我应该多久才能开始发布?在我的测试中,只需执行

意味着我没有收到我自己发布的前 3-5 条消息。

我如何在不求助于的情况下解决这个问题Thread.sleep()?是否可以收到有关连接失败/成功等的通知?

0 投票
2 回答
5603 浏览

redis - 使用 jedis 客户端从春季开始的 aws Redis 集群

我已经使用 jedis 将 redis 集成到我的 spring web 应用程序中(redis 支持 AWS 弹性缓存)。使用单个 jedis 连接工厂写入和读取单个节点可以正常工作。

我现在需要将它扩展到一个集群,以便写入主节点并从辅助节点读取。即,如果一个发生故障,那么 AWS 会自动进行复制,在这种情况下,我将连接的主机名将发生变化。

如何读取出现的新节点?

我如何从 spring 容器(我的意思是 XML 文件)连接到这个?

请任何人有有用的建议,以实现上述场景。

我将不胜感激任何可能有助于解决上述问题的链接或代码。

到目前为止,我正在使用一个连接工厂,使用 jedis 和 redis 模板进行操作。

0 投票
2 回答
6119 浏览

spring-security - 如何使用 Spring Session + Spring security xml 配置和多重安全过滤器

背景

大家好,我们有Spring使用Spring security. 我们通过定义定义了安全过滤器

哪里filter-chain-map

web.xml我们做的

一切都很好:)。现在Spring session根据 以下几行进行连接redisdoc

创建一个filter名为springSessionRepositoryFilter. 所以基本上我们所做的就是在每个自定义filter-chain中添加该过滤器作为第一个过滤器。IE:

结果:该应用程序似乎运行良好,并且monitoring通过redis-cli显示spring正在与之通信redis

问题

springSessionRepositoryFilter里面使用filter-chain可以吗?还是我们滥用了过滤系统?

谢谢,

橡木

编辑

似乎上述方法不适用于希望Authenticate从代码中获取用户的情况,即

将失败。也许是因为它不足以通过filter-chainof运行它org.springframework.security.web.FilterChainProxy

你觉得如何运行filterweb.xml

以上将强制运行springSessionRepositoryFilterspringSecurityFilterChain但在此示例org.springframework.web.filter.DelegatingFilterProxy中被调用两次。springSessionRepositoryFilter在过滤器之前作为过滤器运行的任何其他方法springSecurityFilterChain

0 投票
1 回答
203 浏览

spring-boot - spring boot如何调用新修复的bug版本?

我正在使用弹簧靴1.2.5.RELEASE,我使用spring-boot-starter-redis.

但是我在 上发现了一个错误spring-boot-starter-redis,并且 spring-boot 已经修复了它。

错误在这里:

版本 1.6 GA(高斯林)

春季数据redis启动器异常

升级到 Spring Data Gosling RELEASE

现在我可以使用固定版本Version 1.6 GA1.2.5.RELEASE?如果不是我该怎么办?

下面是我的 pom.xml