如何为读写设置不同的一致性级别?
如果您只想更改当前会话的一致性级别,请使用CONSISTENCY。
如果您想以编程方式更改一致性级别,请为您的客户端语言使用 cassandra 驱动程序。
由于可以为每个语句设置一致性级别,因此您可以在每个语句上设置它,或者使用 PreparedStatements。如果您使用的是 Java 驱动程序,则可以为读取和写入(但不是 only 读取和 only 写入)配置全局一致性级别。
默认[一致性级别]设置在哪里?是读还是写?
如果您想为读取和写入设置不同的一致性级别,则必须在每个语句的基础上进行。使用QueryOptions().setConsistencyLevel 设置全局一致性级别(用于Java 驱动程序)。它适用于读取和写入。
要为当前会话设置一致性级别,请使用CONSISTENCY 命令
来自 cassandra shell (CQLSH)。
例如:
设置 CONSISTENCY 以强制大多数节点响应:
CONSISTENCY QUORUM
要查看您当前的一致性级别,只需从 shell 运行 CONSISTENCY;:
ty@cqlsh> consistency;
Current consistency level is ONE.
对于客户端应用程序编程,使用适当的驱动程序设置一致性级别。
要使用 Java 驱动程序设置 per-insert 一致性级别,例如,使用 setConsistencyLevel 调用 QueryBuilder.insertInto。
例如:
PreparedStatement pstmt = session.prepare(
"INSERT INTO product (sku, description) VALUES (?, ?)");
pstmt.setConsistencyLevel(ConsistencyLevel.QUORUM);
要使用 Java 驱动程序为读取和写入设置 全局 一致性级别,请执行以下操作:
QueryOptions qo = new QueryOptions().setConsistencyLevel(ConsistencyLevel.ALL);
- 由于 Java 驱动程序只执行 CQL 语句,这些语句可以是读取或写入 Cassandra,因此无法全局配置仅读取或仅写入的一致性级别。为此,由于可以为每个语句设置一致性级别,因此您可以在每个语句上设置它,或者使用 PreparedStatements。 Queries and Results 文档中的更多信息。
更多关于读/写一致性级别的资源
关于一致性的其他资源:
您可能还想查看您的副本放置策略和复制因子(这是其他形式的一致性)。
我在下面添加了链接以供参考: