zoukankan      html  css  js  c++  java
  • Redis 数据总结(1 数据导入)

    理论基础部分:http://www.redis.cn/topics/mass-insert.html

    几百上千万的数据建议使用pipe来完成导入。

    1.windows 下数据导入命令:

    type output.data | C:Redis edis-cli.exe -h "127.0.0.1" -p 6379 -a password --pipe

    注意 : --help 可以查看相关的命令,  -n [db] 是转到相关的数据库  如: -n 3

    2.生成文件相关的代码  C#

     FileStream fs = null;
                    if (!Directory.Exists(mroot))//如果不存在就创建文件夹
                        Directory.CreateDirectory(mroot);
                    if (!File.Exists(filepath))
                        fs = File.Create(filepath);//创建该文件
                    if (fs == null)
                        fs = new FileStream(filepath, FileMode.Append);
    
                    StreamWriter sw = new StreamWriter(fs);
                    foreach (var ms in msg)
                    {
                        //开始写入
                        var addstr = "*"+  (ms.Vals.Count +1) + "
    " +
                                            "$"+ GetStrByte(ms.Command)+"
    "+ms.Command+"
    ";
                        foreach (var vv in ms.Vals)
                        {
                            addstr += "$" + GetStrByte(vv) + "
    " + vv+"
    ";
                        }
    
                        sw.Write(addstr);
                    }
    
                    //清空缓冲区
                    sw.Flush();
                    //关闭流
                    sw.Close();
                    fs.Close();

    语句初始化:

                List<RedisProtol> addCom = new List<RedisProtol>();
    
                foreach (var kv in keyValues)
                {
                    //addCom.Add($"HSET {kv.Key}  {kv.Value.Name}  {kv.Value.Value}");
                    var pro = new RedisProtol();
    
                    pro.Command = "HSET";
                    pro.Vals.Add(kv.Key);
                    pro.Vals.Add(kv.Value.Name);
                    pro.Vals.Add(kv.Value.Value);
                    addCom.Add(pro);
                }
                FileSupport.Instance.RedisProWrite(addCom, filename);

     注意几点:

    1)计算长度时用的是字节长度,不是字符长度,如果导入的数据中有中文特别要注意,并且要注意字符的编码问题:

     2)生成的文件格式如下(注意回车和换行):

    
    
  • 相关阅读:
    LINX中的各种alloc
    Enea LINX代码分析之二(ECM_RX)
    Enea LINX代码分析之一
    看代码和写代码还是很不同的
    sctp bind
    sockaddr和sockaddr_in
    pthread条件变量
    System V IPV & Posix IPC(摘自Unix网络编程卷2)
    [宽度优先搜索] FZU-2150 Fire Game
    [字符哈希] POJ 3094 Quicksum
  • 原文地址:https://www.cnblogs.com/leolzi/p/10772238.html
Copyright © 2011-2022 走看看