因此,我认为我需要扩展spring-xd中提供的当前redis-sink,以写入到redis上限列表中,而不是创建一个新的,但不幸的是,情况似乎变得更糟,因为我必须更深入地研究spring集成,并进一步回到spring-data (spring-data- redis ),因为整个redis-sink似乎都基于redis上的通用pub/sub抽象-或者是否有某种类型的处理程序,可以在消息到达通道处理程序后定义?
为了在推送数据redis时具有“上限列表的效果”,我需要执行redis " push“,然后执行"rtrim”,如下所示- http://redis.io/topics/data-types-intro。如果我要构建一个自定义的spring-integration / spring-data模块。我相信我在这里看到了对"ltrim“操作的支持,但不支持”rtrim“操作。http://docs.spring.io/spring-data/redis/docs/1.7.0.RC1/api/
任何关于如何/从哪里开始或更简单的方法的建议都将不胜感激。
发布于 2016-03-21 02:21:14
实际上,即使是Redis也没有这样的RTRIM command。我们不需要它,因为我们得到了与LTRIM的负索引相同的行为
开始和结束也可以是负数,表示距列表末尾的偏移量,其中-1是列表的最后一个元素,-2是倒数第二个元素,依此类推。
我认为您应该使用<redis:store-outbound-channel-adapter>,并在其配置中添加类似以下内容:
<int-redis:request-handler-advice-chain>
<beans:bean class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice">
<beans:property name="onSuccessExpression" value="#redisTemplate.boundListOps(${keyExpression}).trim(1, -1)"/>
</beans:bean>
</int-redis:request-handler-advice-chain>删除Redis列表中最旧的元素。
https://stackoverflow.com/questions/36116475
复制相似问题