Redis 数据总结(1 数据导入)
理论基础部分:http://www.redis.cn/topics/mass-insert.html
几百上千万的数据建议使用pipe来完成导入。
1.windows 下数据导入命令:
type output.data | C:\Redis\redis-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) + "\r\n" + "$"+ GetStrByte(ms.Command)+"\r\n"+ms.Command+"\r\n"; foreach (var vv in ms.Vals) { addstr += "$" + GetStrByte(vv) + "\r\n" + vv+"\r\n"; } 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)生成的文件格式如下(注意回车和换行):
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)