zoukankan      html  css  js  c++  java
  • 在.net中使用aquiles访问Cassandra(三)

    之前我们实现了如何修改数据,还需要相应的删除动作。删除方式会有几种情况,以下分别一一介绍。
     
    1.批量删除,适应于多行多列的情况。
    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);
    }
  • 相关阅读:
    随机生成30道四则运算题目
    《构建之法》阅读笔记01
    第一周学习进度
    个人介绍
    MyBatis(登录)
    MyBatis
    动态网页
    网页基本标签
    Servlet基础
    JSP数据交互
  • 原文地址:https://www.cnblogs.com/zeeman/p/3216475.html
Copyright © 2011-2022 走看看