• 使用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;      

       }

  • 相关阅读:
    GitHub Pages 绑定二级域名
    JS正则表达式(JavaScript regular expression)
    天猫魔盒远程安装APP
    'msbuild.exe' 不是内部或外部命令,也不是可运行的程序
    Jenkins自动更新与数据备份
    Jenkins插件无法更新、Jenkins插件不能下载问题解决
    安全测试工具wapiti的安装和使用(2)命令及参数解释
    安全测试工具wapiti的安装和使用(1)安装
    Jenkins远程构建和发布,基于IIS服务器(.netCore+vue)(三)
    Jmeter报错:java.net.ConnectException: Connection timed out: connect
  • 原文地址:https://www.cnblogs.com/aobama/p/4368573.html
Copyright © 2020-2023  润新知