问题标签 [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.
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 之前启用缓存?
java - Spring-data-redis:几个小时后神秘地停止工作
我有一个使用 spring-data-redis 的后端进程。与retwis clone类似,它使用StringRedisTemplate。在我的 Digital Ocean droplet 上运行大约 3-4 小时后,它神秘地停止了持久化新密钥。我的日志表明我的 redis 持久性代码正在被调用,它只是在 spring-data-redis/jedis 层以某种方式停止工作,没有任何错误迹象。
到目前为止已完成故障排除
我有足够的内存。Redis 只用了 6mb。
我重新启动了后端进程,一切都再次按预期工作,正在插入键值。
我检查了 redis-server.log。这与我对 spring-data-redis/jedis 失败的假设一致。这些条目在我插入最后一个密钥的同时停止。2015 年 8 月 9 日的条目是它神秘失败的时候。第二天,2015 年 8 月 10 日的条目是我重新启动它的时间。
/li>我自己的应用程序日志没有显示异常。spring-data-redis 和 jedis 也没有记录器。所以他们没有抛出异常(因为我没有捕捉到任何异常)并且他们没有日志输出。显然,正在向 spring-data-redis 发出请求,并且 spring-data-redis 毫无例外地返回到我的代码。
故障排除的后续步骤?
spring-data-redis 及其底层 redis 驱动程序“Jedis”中的日志记录量非常少。我已经在 2 上启用了日志记录,看看当/如果问题再次发生时是否有帮助。
我也考虑过调试它,但我认为此时宁愿切换到不同的驱动程序/项目。
java - 无法在 Redis 模板中加载连接工厂,也无法找到 spring config xml
我正在开发一个 Spring-MVC 应用程序,我想在其中将 Redis 用于 Redis 键值对中的字符串和整数值。我的意图是在传递字符串时检索整数。当我试图检查我正在尝试的配置是否正确时,我收到了一个错误。
我有 2 个问题,当我尝试运行项目以查看我的配置是否正确时出现错误(错误日志发布在下面)。其次,除了传递XML文件并获取上下文之外,我不知道如何从spring中获取UserAppRegistration实例。这种方法对我不起作用。
错误日志:
组件类。请注意我在服务文件夹中有这个类:
root-context.xml 中的 Redis 配置:
现在,我想检索 UserAppRegistration 组件以从中推送和拉取值。建议的方式是这样的:
出于某种原因,这种方式以前从未对我有用。xml 永远找不到,我尝试了很多路径。如果有更好的选择,我想知道。非常感谢。如果需要更多信息,请告诉我。非常感谢。
java - 从 Redis 中检索 Person 对象而不提供哈希码
我正在开发一个 Spring-MVC 应用程序,我在 Redis 中插入了一个 Person 对象。现在插入对象时,我还需要为检索到的 Person 提供 hashCode 值。有什么办法,我可以在不传递 hashCode 的情况下检索 Person 对象,只是关键部分。请告诉我。这是插入代码:
插入代码:
检索代码:
此时我无权访问我插入的人的哈希码。我怎样才能只使用键检索 Person 对象。非常感谢。:-)
xml - application-context.xml中的spring数据redis主从配置
我已经通过使用 jedis 连接工厂和 redis 模板对 spring 数据 redis 进行了 poc,它工作正常,并且使用单个节点快速获得结果,但现在我想使用 master 写入和 child 读取以提高读取性能,任何人都可以帮我在 applicationcontext.xml 中配置这些信息。
java - 使用 Spring Data Redis 的 Redis Pub/Sub:消息以错误的顺序到达
我正在尝试使用带有 Spring Data Redis 的 Redis 发布/订阅来实现聊天。
我使用 RedisTemplate 发布消息,如下所示:
为了接收消息,我有一个 MessageListener,如下所示:
消息是这样发布的:
但是,收到的消息似乎以错误的顺序传递:
是否可以使用 Spring 提供的 RedisTemplate/MessageListener 同步发送/接收消息?
当前的代码库很小,可以在GitHub 上查看。
java - Spring Data Redis:我怎么知道 MessageListener 准备好了?
根据文档RedisMessageListnerContainer
-
public void addMessageListener(MessageListener listener, Topic topic):
将消息侦听器添加到(可能正在运行的)容器中。如果容器正在运行,则侦听器会尽快开始接收(匹配)消息。
上面的引用似乎表明没有真正的方法知道侦听器何时准备好 - 或者订阅是否成功。
那么,鉴于我发布和订阅了一个频道 - 我应该等多久才能开始发布?在我的测试中,只需执行
意味着我没有收到我自己发布的前 3-5 条消息。
我如何在不求助于的情况下解决这个问题Thread.sleep()
?是否可以收到有关连接失败/成功等的通知?
redis - 使用 jedis 客户端从春季开始的 aws Redis 集群
我已经使用 jedis 将 redis 集成到我的 spring web 应用程序中(redis 支持 AWS 弹性缓存)。使用单个 jedis 连接工厂写入和读取单个节点可以正常工作。
我现在需要将它扩展到一个集群,以便写入主节点并从辅助节点读取。即,如果一个发生故障,那么 AWS 会自动进行复制,在这种情况下,我将连接的主机名将发生变化。
如何读取出现的新节点?
我如何从 spring 容器(我的意思是 XML 文件)连接到这个?
请任何人有有用的建议,以实现上述场景。
我将不胜感激任何可能有助于解决上述问题的链接或代码。
到目前为止,我正在使用一个连接工厂,使用 jedis 和 redis 模板进行操作。
spring-security - 如何使用 Spring Session + Spring security xml 配置和多重安全过滤器
背景
大家好,我们有Spring
使用Spring security
. 我们通过定义定义了安全过滤器
哪里filter-chain-map
在web.xml
我们做的
一切都很好:)。现在Spring session
根据 以下几行进行连接redis
时doc
创建一个filter
名为springSessionRepositoryFilter
. 所以基本上我们所做的就是在每个自定义filter-chain
中添加该过滤器作为第一个过滤器。IE:
结果:该应用程序似乎运行良好,并且monitoring
通过redis-cli
显示spring
正在与之通信redis
。
问题
在springSessionRepositoryFilter
里面使用filter-chain
可以吗?还是我们滥用了过滤系统?
谢谢,
橡木
编辑
似乎上述方法不适用于希望Authenticate
从代码中获取用户的情况,即
将失败。也许是因为它不足以通过filter-chain
of运行它org.springframework.security.web.FilterChainProxy
。
你觉得如何运行filter
它web.xml
?
以上将强制运行springSessionRepositoryFilter
,springSecurityFilterChain
但在此示例org.springframework.web.filter.DelegatingFilterProxy
中被调用两次。springSessionRepositoryFilter
在过滤器之前作为过滤器运行的任何其他方法springSecurityFilterChain
?
spring-boot - spring boot如何调用新修复的bug版本?
我正在使用弹簧靴1.2.5.RELEASE
,我使用spring-boot-starter-redis
.
但是我在 上发现了一个错误spring-boot-starter-redis
,并且 spring-boot 已经修复了它。
错误在这里:
升级到 Spring Data Gosling RELEASE
现在我可以使用固定版本Version 1.6 GA
吗1.2.5.RELEASE
?如果不是我该怎么办?
下面是我的 pom.xml