我想排一小队。我需要弹出队列/列表中的第一个值,否则就推一个新值。它能在一次交易中完成吗?我尝试使用两个请求:lpop和send lpush。
如果lpop没有返回任何东西。但它不起作用,监视器显示:
"lpop" "ns:queue"
"lpop" "ns:queue"
"lpop" "ns:queue"
"rpush" "ns:queue" "1"
"rpush" "ns:queue" "2"
"rpush" "ns:queue" "3"
async正在做它的生意。最后,所有3个连接都将在队列中,而不是只有一个连接。我相信multi不适用于条件语句。
1条答案
按热度按时间b91juud31#
您可以使用lua脚本来实现这一点,有关更多信息,请查看redis文档。
下面的lua脚本调用lpop if result found返回元素,否则它将使用lpush推送数据。希望这能回答问题。