使用MultigetSliceQuery时,即使密钥不存在,结果也会为每个密钥包含一行。测试的唯一方法可能是检查每行是否存在任何列。
但是,如果我创建一个包含1个或更多列的行然后删除所有列,则MultigetSliceQuery的结果将是相同的(就好像该行从未创建过一样)。
使用CLI测试时," 列出CF "将显示空行键,但" 获取CF [键] "将返回" 返回0结果。"
没有任何列的行是否有效?
是否有办法检查结果为空vs存在?
答案 0 :(得分:3)
http://wiki.apache.org/cassandra/FAQ#range_ghosts
如果您执行MultigetSlice并枚举键,它将返回每个键的结果。
如果是cli,请参阅
http://wiki.apache.org/cassandra/DistributedDeletes
对于已删除的列,空行实际上有逻辑删除。
如果您尝试检索整行并返回没有列的结果,则实际上意味着该行不存在。