记录一次redis rdb爆满,导致服务器崩溃

先谈一下我使用到redis的业务:需要预先将数据库成绩缓存到redis中,数据也不大,二万多条记录,但是到了期末,学生查成绩那是疯狂啊,小服务器的数据库承载不了怎么多访问。刚开始,将数据写入缓存发现很慢很慢,因为服务器是虚拟机而数据库在物理机上,以为是通信问题,用了管道技术

            Jedis jedis = JedisUtil.getJedis();
			Pipeline pipeline = jedis.pipelined();
			for(Map.Entry<String, Object> entry : map.entrySet()){
				pipeline.set(entry.getKey(), JSONArray.toJSONString(entry.getValue()));
			//	pipeline.expire(entry.getKey(), 60*60*5); //缓存 5个小时
			}
			pipeline.sync();
			JedisUtil.close(jedis);

发现问题依然没解决,然后线上小程序突然就崩溃了,顿时有点慌,然后去看redis日志大概报错日志就是RDB满了 ,我顿时进入redis.cil客户端查看 输入info 查看redis内存,发现17G的内存都满了,才2万多条记录不至于吧。
最后发现是 代码问题,set进去的数据呈几何式增长。

唉,大意了。。。
说一下这次的解决思路:
1.首先发现写入数据很慢, 采用了redis Pipeline技术没有解决
2.发现内存爆满,set进去的数据有问题,修改代码逻辑即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值