Redis命令的同步问题

时间:2018-08-30 02:39:38

标签: java concurrency redis transactions jedis

我有一个服务器,该服务器侦听队列并处理队列中的数据。
这是获取数据的逻辑:

BLPOP queue 60  
    if data found in queue:  
        LRANGE queue 0 9    //Fetch 10 more items
        int size = queue.size()
        LTRIM queue size -1 //Remove the items fetched by lrange   

问题
该服务器的2个节点执行相同的任务,并且面临并发问题。
例如,在一个节点的BLPOP和另一节点的LRANGE中检索同一元素,这导致处理重复。

一种解决方法是在MULTI EXEC部分中放置LRANGE LTRIM
但是我有几个问题:

  1. 由于无法在交易中获得LTRIM的价值,我如何LRANGE仅提取交易中的物品?
  2. 交易保障措施LRANGE来自另一个节点的BLPOP吗?

0 个答案:

没有答案