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

    数据的持久化我们都已经完成了,和所有应有程序一样,最重要的是要向用户展示数据。下面我们就推出这部分代码,读取任意行任何列:

            public IList<TRowResult> ExecuteRowListResult(string columnFamily, IList<string> rowKeys, IList<string> columnNames)
            {
                if (string.IsNullOrWhiteSpace(columnFamily)) throw new ArgumentNullException("columnFamily");
    
                List<byte[]> keys = rowKeys.Select(rowKey => ByteEncoderHelper.UTF8Encoder.ToByteArray(rowKey)).ToList();
                ColumnParent columnPath = new ColumnParent()
                {
                    Column_family = columnFamily,
                };
    
                SlicePredicate sp = null;
                if (columnNames == null || columnNames.Count == 0)
                {
                    sp = new SlicePredicate()
                    {
                        Slice_range = new SliceRange
                        {
                            Count = int.MaxValue,
                            Reversed = false,
                            Start = new byte[0],
                            Finish = new byte[0]
                        },
                    };
                }
                else
                {
                    sp = new SlicePredicate()
                    {
                        Column_names = columnNames.Select(c => ByteEncoderHelper.UTF8Encoder.ToByteArray(c)).ToList()
                    };
                }
    
                Dictionary<byte[], List<ColumnOrSuperColumn>> queryResult = _cluster.Execute(new ExecutionBlock(delegate(Apache.Cassandra.Cassandra.Client client)
                {
                    return client.multiget_slice(keys, columnPath, sp, _consistencyLevel);
                }), _keyspaceName) as Dictionary<byte[], List<ColumnOrSuperColumn>>;
    
    
                if (queryResult != null && queryResult.Count > 0)
                {
                    IList<TRowResult> rows = new List<TRowResult>();
                    foreach (var dic in queryResult)
                    {
                        if (dic.Value.Count == 0) continue;
    
                        TRowResult trow = new TRowResult();
                        trow.Row = ByteEncoderHelper.UTF8Encoder.FromByteArray(dic.Key);
                        trow.Columns = new Dictionary<string, TCell>();
                        foreach (ColumnOrSuperColumn column in dic.Value)
                        {
                            string name = ByteEncoderHelper.UTF8Encoder.FromByteArray(column.Column.Name);
                            string value = ByteEncoderHelper.UTF8Encoder.FromByteArray(column.Column.Value);
                            trow.Columns.Add(name, new TCell()
                            {
                                ColumnName = name,
                                Value = value,
                                Timestamp = column.Column.Timestamp
                            });
                        }
                        rows.Add(trow);
                    }
    
                    return rows;
                }
    
                return null;
            }
  • 相关阅读:
    spring原理
    mybatis原理
    数据结构与算法
    JVM内存模型及垃圾回收算法
    dorado动态修改数据验证
    dorado在dialog中使用js通过控件id修改控件值,值闪烁一下消失问题
    由于;引发的Oracle的BadSqlExecption
    swagger配置
    SpringBoot整合mybatis碰到的问题
    关于浏览器的自动缓存问题
  • 原文地址:https://www.cnblogs.com/zeeman/p/3226633.html
Copyright © 2011-2022 走看看