利用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 ...
 
随机推荐
- vue简章
			
什么是vue? 可以独立完成前后端分离式web项目的javaScript框架 为什么使用vue? 三大主流框架之一:Angular React Vue 先进的前端设计模式:MVVM 可以完全脱离服务 ...
 - JAVA_全局配置文件(配置网址,url等等)_第一种方式
			
一.概述 当使用httpClient调其他系统接口时,需要通过地址来发送post请求. 这时我们有不同的环境,那么就有两个问题. 1是地址不能写在代码中,而是要写在配置文件. 2是不同环境配置文件应该 ...
 - RESTful Service API 常见问题解决方案
			
REST 风格的优秀设计应该像下面这些: - GET /users 获取所有用户 - GET /users/1234 获取ID为1234的用户 - POST /users 创建一个新用户 - PUT ...
 - linux c 检测ip变化
			
#include <string.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <ne ...
 - 【转载】     从ACM会议看中国大陆计算机科学与国外的差距
			
ps: 这是一篇06年的文章,与今日的国内计算机行业学术圈环境简直是天翻地覆,很不错的history,值得mark下,今日的cs学术发展十号是坏不发表意见,但是history是值得对比,借鉴,思考 ...
 - 启发式搜索A-Star算法   【寻找  最短路径 算法】【地理几何位置  可利用的情况】
			
在处理最短路径问题时,有一种启发式算法是我们应该了解的,由于其有着优秀的探索效率在各自现实项目中多有应用,它就是 A-star 算法,或 A* 算法. 个人观点: A* 算法并不保证找到的路径一 ...
 - Can't locate find.pl in @INC (@INC contains: /etc/perl xxxx) at perlpath.pl line 7.
			
/********************************************************************** * Can't locate find.pl in @I ...
 - Jaxb如何优雅的处理CData
			
前言 Jaxb确实是xml和java对象映射互转的一大利器. 但是在处理CData内容块的时候, 还是有些小坑. 结合网上搜索的资料, 本文提供了一种解决的思路, 看看能否优雅地解决CData产出 ...
 - JS中数据类型的判断
			
typeof 使用 : var n = "hello"; console.log(typeof n); console.log(typeof(n));
 - 如何让jpa 持久化时不校验指定字段
			
源文:https://www.toocruel.net/jpa-validate/ 怎么让jpa 持久化时不校验指定字段 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥 ...