public void Remove(string columnFamily, IList<RowMutation> rowMutations) { if (string.IsNullOrWhiteSpace(columnFamily)) throw new ArgumentNullException("columnFamily"); Dictionary<byte[], Dictionary<string, List<Apache.Cassandra.Mutation>>> mutation_map = new Dictionary<byte[], Dictionary<string, List<Apache.Cassandra.Mutation>>>(); foreach (var rowMutation in rowMutations) { byte[] key = ByteEncoderHelper.UTF8Encoder.ToByteArray(rowMutation.Key); Dictionary<string, List<Apache.Cassandra.Mutation>> cfMutation = new Dictionary<string, List<Apache.Cassandra.Mutation>>(); List<Apache.Cassandra.Mutation> mutationList = new List<Apache.Cassandra.Mutation>(); Apache.Cassandra.Mutation mutation = new Apache.Cassandra.Mutation(); mutation.Deletion = new Deletion(); if (rowMutation.Mutations != null && rowMutation.Mutations.Count > 0) { mutation.Deletion.Predicate = new SlicePredicate() { Column_names = rowMutation.Mutations.Select( m => ByteEncoderHelper.UTF8Encoder.ToByteArray(m.ColumnName)).ToList() }; } mutation.Deletion.Timestamp = DateTime.Now.ToUnixTimestamp(); mutationList.Add(mutation); cfMutation.Add(columnFamily, mutationList); mutation_map.Add(key, cfMutation); } if (mutation_map.Count == 0) return; _cluster.Execute(new ExecutionBlock(delegate(Apache.Cassandra.Cassandra.Client client) { client.batch_mutate(mutation_map, _consistencyLevel); return null; }), _keyspaceName); }2.删除指定的行。
public void Remove(string columnFamily, string rowKey) { if (string.IsNullOrWhiteSpace(columnFamily)) throw new ArgumentNullException("columnFamily"); byte[] key = ByteEncoderHelper.UTF8Encoder.ToByteArray(rowKey); ColumnPath columnPath = new ColumnPath() { Column_family = columnFamily, }; _cluster.Execute(new ExecutionBlock(delegate(Apache.Cassandra.Cassandra.Client client) { client.remove(key, columnPath, DateTime.Now.ToUnixTimestamp(), _consistencyLevel); return null; }), _keyspaceName); }3.删除指定行指定列。
public void Remove(string columnFamily, string rowKey, string columnName) { if (string.IsNullOrWhiteSpace(columnFamily)) throw new ArgumentNullException("columnFamily"); byte[] key = ByteEncoderHelper.UTF8Encoder.ToByteArray(rowKey); ColumnPath columnPath = new ColumnPath() { Column_family = columnFamily, Column = ByteEncoderHelper.UTF8Encoder.ToByteArray(columnName) }; _cluster.Execute(new ExecutionBlock(delegate(Apache.Cassandra.Cassandra.Client client) { client.remove(key, columnPath, DateTime.Now.ToUnixTimestamp(), _consistencyLevel); return null; }), _keyspaceName); }4.删除多行,使用批量删除方法完成。
public void Remove(string columnFamily, IList<string> rowKeys) { IList<RowMutation> batchMutations = new List<RowMutation>(); foreach (string rowKey in rowKeys) { batchMutations.Add(new RowMutation(rowKey)); } Remove(columnFamily, batchMutations); }5.删除一行多列,同样调用指量删除方法完成。
public void Remove(string columnFamily, string rowKey, IList<string> columnNames) { IList<RowMutation> rowMutations = new List<RowMutation>(); RowMutation rowMutation = new RowMutation(); rowMutation.Key = rowKey; rowMutation.Mutations = new List<CellMutation>(); foreach (string columnName in columnNames) { rowMutation.Mutations.Add(new CellMutation(columnName)); } rowMutations.Add(rowMutation); Remove(columnFamily, rowMutations); }