利用pipeline批量插入数据到redis
在推荐系统中,推荐候选集格式一般是,itemid itemid_list。要把itemid作为key,推荐列表作为value批量插入到redis。
比如文件cf.data为:
cf_763500210 342900215:0.210596124675,372400335:0.209455077845,663500334:0.0450228848833,771300304:0.303416465385
cf_4272909287 0197309320:1.0,1977309242:1.0,2171809288:0.987105477748,4041809109:1.0,4247509287:0.61113311824,4306209287:1.0,4687609332:0.842522148763,5364909320:1.0,7006909116:1.0,7578709264:0.300615689335,9405509328:0.710187812454,9578209232:1.0,9869609287:0.808605591539
在item前加cf,是为了标注此推荐候选集是有CF算法计算得到的。
cat cf.data | awk -F "\t" '{print "set" " " $1 " " $2}' > cf.insert
cat cf.insert | /home/app/redis-4.0.9/src/redis-cli --pipe

这时候会报错,那是字符编码格式问题,我的系统环境是LINUX。提前说一下哦,避免不必要的误会。
unix2dos data.insert

此时,可以看到5条数据批量插入成功,0个错误。
如果数据量很大,一次插入可能会报错,那就得做数据分片
#创建一个临时文件夹tmp
mkdir tmp
cd tmp
cp ../cf.insert cf.insert #将数据拷贝过来
#对文件进行分片处理
split cf.insert
#处理完,把文件删除
rm -rf cf.insert
#用shell脚本执行插入命令
for i in `ls`; do cat $i | /home/app/redis-4.0.9/src/redis-cli --pipe; done;
注意:ls使用Tab键上面的反引号括起来的。
`` 符号在shell里面正式的名称叫做backquote , 一般叫做命令替换
其作用是将引用命令的输出替换到字符串或者变量
通常如果需要在一个序列中用到其它命令的输出,就可以用``
split命令的使用

利用pipeline批量插入数据到redis的更多相关文章
- SpringBoot(18)---通过Lua脚本批量插入数据到Redis布隆过滤器
通过Lua脚本批量插入数据到布隆过滤器 有关布隆过滤器的原理之前写过一篇博客: 算法(3)---布隆过滤器原理 在实际开发过程中经常会做的一步操作,就是判断当前的key是否存在. 那这篇博客主要分为三 ...
- mysql利用存储过程批量插入数据
最近需要测试一下mysql单表数据达到1000W条以上时增删改查的性能.由于没有现成的数据,因此自己构造,本文只是实例,以及简单的介绍. 首先当然是建表: [sql]view plaincopy CR ...
- 利用procedure批量插入数据
正文 要求在页面查询到5000条数据,为了方便插入,准备用shell脚本写curl命令调用自己写的代码接口,但是速度慢,而且写的时候遇到点儿小问题,故用sql语句写了这个功能 由于operat ...
- sqlalchemy ORM进阶- 批量插入数据
参考: https://www.jb51.net/article/49789.htm https://blog.csdn.net/littlely_ll/article/details/8270687 ...
- 在Redis集群中使用pipeline批量插入
在Redis集群中使用pipeline批量插入 由于项目中需要使用批量插入功能, 所以在网上查找到了Redis 批量插入可以使用pipeline来高效的插入, 示例代码如下: Pipeline p = ...
- django基础之day08,利用bulk_create 批量插入成千上万条数据
bulk_create批量插入数据 models.py文件 class Book(models.Model): title=models.CharField(max_length=32) urls.p ...
- SQLServer 批量插入数据的两种方法
SQLServer 批量插入数据的两种方法-发布:dxy 字体:[增加 减小] 类型:转载 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Ins ...
- SQL 2005批量插入数据的二种方法
SQL 2005批量插入数据的二种方法 Posted on 2010-07-22 18:13 moss_tan_jun 阅读(2635) 评论(2) 编辑 收藏 在SQL Server 中插入一条数据 ...
- django----Sweetalert bulk_create批量插入数据 自定义分页器
目录 一.Sweetalert使用AJAX操作 二.bulk_create 三.分页器 divmod 分页器组件 自定义分页器的使用 一.Sweetalert使用AJAX操作 sweetalert ...
随机推荐
- centos的mysql升级之后密码重置
1.配置文件添加过滤密码选项 #vim /etc/my.cnf 跳过密码校验 2.重启mysql服务 #/etc/init.d/mysqld restart 3.#mysql -uroot -p ...
- SpringMVC实现从磁盘中下载文件
除了文件的上传我们还需要从磁盘下载 实现文件的下载只要编写一个控制器,完成读写操作和响应头和数据类型的设置就可以了 下面演示的是从G盘imgs文件夹中下载文件 具体代码如下 package com.c ...
- IE9中input事件与异步事件连用会发生跨域问题
IE版本中IE8以及IE9以上版本不会存在这个问题唯独IE9 发生跨域问题代码 $("#stock_code").bind("input",function(e ...
- 栈溢出原理与 shellcode 开发
ESP:该指针永远指向系统栈最上面一个栈帧的栈顶 EBP:该指针永远指向系统栈最上面一个栈帧的底部 01 修改函数返回地址 #include<stdio.h> #include< ...
- Ubuntu16.04安装&创建虚拟环境
一.linux环境 Ubuntu16.04 二.安装和配置虚拟环境 安装虚拟环境 sudo pip install virtualenv sudo pip install virtualenvwrap ...
- 2.33 定位的坑:class属性有空格
2.33 定位的坑:class属性有空格 前言有些class属性中间有空格,如果直接复制过来定位是会报错的InvalidSelectorException: Message:The given sel ...
- json2的基本用法
<script type="text/javascript" src="/CoreResource/JS/json2.min.js"></sc ...
- php面向对象之trait
trait的使用技巧trait是php5.4以后新增加的一个功能,可以将多个类中,共用的一些属性和方法提取出来做来公共trait类,就像是装配汽车的配件,如果你的类中要用到这些配件,就直接用use导入 ...
- Jaxb如何优雅的处理CData
前言 Jaxb确实是xml和java对象映射互转的一大利器. 但是在处理CData内容块的时候, 还是有些小坑. 结合网上搜索的资料, 本文提供了一种解决的思路, 看看能否优雅地解决CData产出 ...
- 【letcode】5-LongestPalindromicSubstring
回文串 回文串(palindromic string)是指这个字符串无论从左读还是从右读,所读的顺序是一样的:简而言之,回文串是左右对称的.一般求解一个字符串的最长回文子串问题. problem:Lo ...