【发布时间】:2016-07-27 17:51:57
【问题描述】:
我的服务器应用程序中有两种方法:
boolean isMessageExist(messageId) 执行以下查询:
SELECT messageId from message where messageId =1;
insertMessage(int messageId,String data) 执行以下查询:
INSERT INTO message (messageId,data) VALUES (1, xyz);
在我的代码中,我正在执行以下操作以满足“仅在消息不存在时插入”的要求。
if(!isMessageExist(1)){
insertMessage(1,"xyz")
}
但如果对相同 messageId 的请求几乎同时出现,则上述代码不起作用。
即在时间 T0 ... Read1(1)、Write1(1) 和 Read2(1)、Write2(1) 同时发生,因为这两个请求是同时从客户端发送的。有没有办法在服务器端按顺序发出这些请求。我的意思是 Read2(1) 应该总是得到结果 Write1(1) ?
如果 IF NOT EXISTS 由于性能开销,我不想使用 CAS 操作。 有没有其他方法可以达到我的要求?请提出建议。
【问题讨论】:
标签: cassandra cassandra-2.0 cql3