【求助】redis性能怎么比文本还慢呢?

tank212 2014-12-08 11:23:27
刚学习redis,使用jedis做了个小程序,用循环写入70w条数据。发现性能很差啊,需要90多秒。而直接用循环将这些数据写入文本文件,才花了3秒多。
不明白是不是什么地方还需要设置,用的是redis默认的配置,分配最大3G内存,redis就在本机上
猜测是不是每次写入都要重连接?如何正确测试性能?求指导!谢谢!

代码如下:

@Before
public void setUp() {
this.pool = new JedisPool(new JedisPoolConfig(), "127.0.0.1");
this.jedis = pool.getResource();
}

@Test
public void testBigList(){
long lStartTime=System.currentTimeMillis();
for (int i = 0; i < 700000; i++)
{
jedis.lpush("mylist", String.valueOf(i));
}

long lForTime = System.currentTimeMillis();
System.out.println("执行耗时 : " + (lForTime - lStartTime) / 1000f + " 秒 ");
}
...全文
188 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
致知Fighting 2014-12-08
  • 打赏
  • 举报
回复
引用 2 楼 tank212 的回复:
[quote=引用 1 楼 ygycomon 的回复:] 我在本机跑是34.903秒
执行耗时 : 34.903 秒
不过,按照你的90s来算,一条记录的插入时间是:0.0001285714,不知道LZ是不是对这个性能不满意。要知道redis是一个数据库,你插入的东西是可以做很多操作的,这个本身和文件就没得比,你写文件是单纯的磁盘io操作
请问你的配置是什么样的呢?34秒比我的高了不少呢?我是在win7 32位 4G内存环境下执行的,redis用的默认配置。[/quote] 重点不是34s或者90s,重点是你向一个数据库里写数据花的时间是0.0001285714,这个性能是毫无问题的。另外你用数据库的插入时间和写文件的时间去比较,本身就是不合适没有一点可比性的
冥王之锤 2014-12-08
  • 打赏
  • 举报
回复
写文件一般实现是先写到缓存,再写到硬盘。而且现在硬盘一般也有64M缓存之类的。实际比较的依然是写内存的速度。 数据库的更重要的是读,条件查询。 对比对象也应是数据库。 根据业务不同,可能侧重不同。
tank212 2014-12-08
  • 打赏
  • 举报
回复
引用 1 楼 ygycomon 的回复:
我在本机跑是34.903秒
执行耗时 : 34.903 秒
不过,按照你的90s来算,一条记录的插入时间是:0.0001285714,不知道LZ是不是对这个性能不满意。要知道redis是一个数据库,你插入的东西是可以做很多操作的,这个本身和文件就没得比,你写文件是单纯的磁盘io操作
请问你的配置是什么样的呢?34秒比我的高了不少呢?我是在win7 32位 4G内存环境下执行的,redis用的默认配置。
致知Fighting 2014-12-08
  • 打赏
  • 举报
回复
我在本机跑是34.903秒
执行耗时 : 34.903 秒
不过,按照你的90s来算,一条记录的插入时间是:0.0001285714,不知道LZ是不是对这个性能不满意。要知道redis是一个数据库,你插入的东西是可以做很多操作的,这个本身和文件就没得比,你写文件是单纯的磁盘io操作

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧