zoukankan      html  css  js  c++  java
  • 使用redis for .net的一点建议

    redis for .net用了几天,发现确实很灵活,它提供了物种数据结构供我们选择,组装,建模,因此,在C#中,你可以把基础数据组合过后再放到redis中,这里组装有两层含义:外部组装:比如将基元类型:string ,int ,datetime这些放进集合,数组,list,hashtable,然后,再搭积木一样在redis中重新组装(不论你在进入redis之前是什么类型,进入的时候都得向从空的集合添加元素一样,批量添加顶多到数组(集合)这一层次,然而redis还没有达到ado 这样的抽象,意思就是,如果你想把一行record,一个dataRow,一个DataColumn,一个DataTable,一个DataSet直接放进redis,这是错误的,必须拆成C# 基本类型或组装为C#集合类型(集合中不允许有任何抽象的ado对象,会报错),最重要的一点:和数据库的数据交互,同步等,最终是借助串的形式,字节数组的形式进行流动,这可以看成数据库之间的管道,但中间必须至少有一层做适配处理, 示例如下:

     public string testComplexDadaTable()
            {
                string key = "key";
                byte[] bytekey = System.Text.Encoding.Default.GetBytes(key);
                using (RedisClient clientt = new RedisClient("127.0.0.1:6379"))
                {
                    DataTable dt = GetDataTable();
                    var columns = dt.Columns;
                    var rows = dt.Rows;
                    List<DateTime> mydate = new List<DateTime>();
                    List<DataRow> datarow = new List<DataRow>();
                    Hashtable hashtable = new Hashtable();
                    for (int i = 0; i < rows.Count; i++)
                    {

           DateTime test = (rows[i].Field<DateTime>(3));      

                      mydate.Add(test);                  

       string testby = test.ToString();                 

        byte[] arrtext = System.Text.Encoding.Default.GetBytes(testby);            

             clientt.HSet("hashkey", bytekey, arrtext);                

         if(!hashtable.ContainsKey("key"))

    {

                            hashtable.Add("key", test);               

          }

                    }          

           clientt.Get<DataRow>("row");            

         clientt.Set<List<DateTime>>("mydate", mydate);    

             }           

      RedisClient rdc = new RedisClient("127.0.0.1:6379");     

            var valueComplex = rdc.Get<List<DateTime>>("mydate");     

            var byteresult = rdc.HGet("hashkey", bytekey);                 

         string constructedString = System.Text.Encoding.Default.GetString(byteresult);      

           return null;             //  clientt.LPush("redis:mysql:10086", null);     

        }

     private DataTable GetDataTable()    

         {         

        DataTable table = new DataTable();         

        table.Columns.Add("Dosage", typeof(int));       

          table.Columns.Add("Drug", typeof(string));       

          table.Columns.Add("Patient", typeof(string));          

       table.Columns.Add("Date", typeof(DateTime));

                // Here we add five DataRows.      

           table.Rows.Add(25, "Indocin", "David", DateTime.Now);     

            table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);          

       table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);        

         table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);          

       table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);         

        return table;      

       }

  • 相关阅读:
    params
    robotframework+jenkins分布式执行自动化测试用例
    python文件读写
    Robot Framework资料
    RobotFramework环境搭建
    Django评论系统
    Django集成TinyMCE(admin后台+前台)
    个人博客模块分析
    Django实战,小网站实现增删改查
    docker入门【1】
  • 原文地址:https://www.cnblogs.com/aobama/p/4368573.html
Copyright © 2011-2022 走看看