Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Transactions 在Redis通道中避免重复的正确方法_Transactions_Redis_Publish Subscribe_Duplicate Removal - Fatal编程技术网

Transactions 在Redis通道中避免重复的正确方法

Transactions 在Redis通道中避免重复的正确方法,transactions,redis,publish-subscribe,duplicate-removal,Transactions,Redis,Publish Subscribe,Duplicate Removal,我有一个系统,多个发布者将数据放入同一个Redis频道。所有发布者发布的消息类型相同,但内容不同。每条消息都有一个唯一的id。但是,多个发布者可以将相同的消息(即,具有相同的消息id)放入通道 我希望在通道中避免重复,以便订阅者只获得唯一的消息。有没有办法配置Redis通道以避免重复 如果没有,这就是我计划实施的。 在Redis中保留一组消息ID。在Redis事务中,每个发布者必须在将消息id放入通道之前检查消息id集 如果有人有更好的想法或能指出我方法中的缺陷,我将不胜感激 谢谢 您的意思是让

我有一个系统,多个发布者将数据放入同一个Redis频道。所有发布者发布的消息类型相同,但内容不同。每条消息都有一个唯一的id。但是,多个发布者可以将相同的消息(即,具有相同的消息id)放入通道

我希望在通道中避免重复,以便订阅者只获得唯一的消息。有没有办法配置Redis通道以避免重复

如果没有,这就是我计划实施的。 在Redis中保留一组消息ID。在Redis事务中,每个发布者必须在将消息id放入通道之前检查消息id集

如果有人有更好的想法或能指出我方法中的缺陷,我将不胜感激


谢谢

您的意思是让每个客户端检查字符串集而不是消息id吗?如果是这样的话,你的方法听起来很有用。我唯一的建议是使用消息的散列,而不是消息本身,因为set操作会更快。我认为保留set是一种合理的方法,我不认为可以将pubsub配置为避免重复。顺便问一下,为什么“订阅者”要把同样的信息放进频道?这只是一个输入错误还是我遗漏了什么?@WeiLi-是的,这是一个输入错误-我指的是多个出版商。@LeeAvital-不,我指的是消息id。消息ID由另一个上游系统生成,多个发布者可以拥有完全相同的消息。由于消息ID总是唯一的,所以我可以使用它来代替您建议的消息字符串散列。这就是我最终解决这个问题的方法。