redis 保存大量数据
1.概述
在项目中使用redis缓存万量级的数据,如果只是用普通的方式进行缓存数据会非常耗时
private void addSetMembers(String key, List<String> values) {for (String value: values) {stringRedisTemplate.opsForSet().add(key, value);}}
2.分析
之所以慢的原因就是如果数据是1万条,add方法就会执行1万次,也就是产生1万次的web服务器与redis的通信连接,每次通信往返大概耗时1毫秒,因此1万次通信就是10秒,10万次就是100秒,数据量与耗时成正比。因此解决这个问题最直接的方案就是减少通信次数。而redis的pipeline正好可以用来减少与redis的通信。
3.代码
public void addSetMembers(String key, List<String> values) {//开启管道stringRedisTemplate.executePipelined((RedisCallback<List<String>>) connection -> {for (String value: values) {//添加执行命令connection.setCommands().sAdd(key.getBytes(), value.getBytes());}return null;});}
4.比较分析
使用pipeline之后,缓存速度有了显著的提升。
以下是 Redis实战 一书中的数据,可以作为参考:
调用pipeline的方法很明显比普通的方法快好几倍
5.小结
redis的pipeline可以减少web服务器与redis的通信次数,同样地,redis的multi和exec命令也能够减少通信次数。只不过后者是事务型的,前者是非事务的,事务会消耗一定的资源并且会阻塞其他的命令,所以在不需要保证事务的情况下pipeline可以带来更好的性能
redis 保存大量数据相关推荐
- 14 Redis 保存时间序列数据
14 Redis 保存时间序列数据 前言 一.时间序列数据的读写特点 二.基于 Hash 和 Sorted Set 保存时间序列数据 三.基于 RedisTimeSeries 模块保存时间序列数据 总 ...
- 这么设计,Redis 10亿数据量只需要100MB内存
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:www.toutiao.com/i676764283 ...
- 使用Spring操作Redis的key-value数据
前言 最近工作一直忙的不可开交,小Alan已经很久没有和大家分享知识了,在深圳待了两年多,依然感觉自己还是个小菜鸟,工作中还是会遇到很多自己在短期内无法搞定的事情,每当这个时候总是会感觉到很沮丧,就会 ...
- laravel用redis保存session遇到的坑,没报错,但redis-cli就是查不到
laravel用redis保存session遇到的坑, 配置redis存储session流程是这样的 在.evn文件中把session驱动和连接改为了redis的 如下: SESSION_DRIVER ...
- Redis 10亿数据量只需要100MB内存,为什么这么牛?
作者:java架构设计 来源:toutiao.com/i6767642839267410445 本文主要和大家分享一下redis的高级特性:bit位操作. 力求让大家彻底学会使用redis的bit ...
- redis保存dataset
公司统一走redis缓存,也将之前的memcache迁移到redis 碰到问题是redis的dataset缓存. memcache底层封装了dataset的序列化. 而redis引的DLL包,未支持. ...
- redis 保存 array list 区别_为什么Redis的RDB备份不用多线程实现CopyOnWrite?
前言 这篇文章源于我昨天看到的一个有意思的问题. 快照持久化是个很耗时间的操作,而Redis采用fork一个子进程出来进行持久化.理论而言,fork出来的子进程会拷贝父进程所有的数据,这样当Redis ...
- 处理Redis里的数据
处理Redis里的数据 有缘网的数据爬回来了,但是放在Redis里没有处理.之前我们配置文件里面没有定制自己的ITEM_PIPELINES,而是使用了RedisPipeline,所以现在这些数据都被保 ...
- [转载] python怎么获取redis中的数据_python操作redis数据库
参考链接: 使用Python在Selenium中进行非阻塞等待 3.redis基本命令 String set(name, value, ex=None, px=None, nx=False, xx=F ...
最新文章
- jquery版本冲突问题
- 一个简单的Ajax例子
- 车联网大数据框架_FEV:基于最新网关技术管理车联网大数据
- 关于系统性能检测的一些使用
- php 提取字段为key,从一个serialize过的array的字符串中取出中取对应KEY的value
- 如何为物联网选择微控制器?
- JSP的自定义标签(五)之Tag File
- Tomcat优化详细教程
- 计算机教师课改先进个人,基础教育课程改革工作先进个人事迹
- python模拟鼠标键盘原理_Python-模拟鼠标键盘动作
- C/C++程序员的编程修养
- access 和SQL有什么不同
- 请打开正确的提问方式
- 今日头条用户文章标题及详情页爬取
- Power BI学习笔记
- Photoshop CC 2017 For Mac安装教程
- 【转载】SAP ABAP内表OCCURS,WORK AREA等 语法对比
- 不小心删除了文件能恢复吗 误删除文件怎么找回
- WADCC明确使命:驱动全球价值互联网国际间联盟
- 【转载】Iptables详解
热门文章
- QQ邮箱开通exchange的方法
- 三种命名规则之-----骆驼命名法
- 华为HCIE证书含金量
- 零知识证明 SNARKs C++库:libsnark教程
- Flume+kafka+Spark Steaming demo2
- mac怎么更新python_mac上更新python的方法
- element-ui版本更新兼容问题
- 手把手教你入门第一步!做西瓜头条自媒体,每天稳定收入200多
- 今日头条用户搜索“室内设计”显示的自媒体粉丝数量及分布情况统计(2020.1.8)
- LeetCode刷题|36有效的数独