选课中应用Redis一些思考

强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan

【前言】

     唯妍最近在研究Redis并且想把Redis加在选课这块儿,正好自己最近在项目中应用了Redis并且之前在家的时候接触过选课这块儿的内容;所以我们针对这块儿的实现进行了几次探讨,以下是唯妍在实现过程中遇到问题我们根据问题进行探讨一些精彩地方的整理。

【愉快的交流】

     一、几点简单说明:

          1、选课功能简介:选课的指定在某一段时间内有很多学生集中进行选,类似于12306抢票以及淘宝或京东上的抢东西;

          2、选课特点:单位时间内并发量大,操作频繁(不断的抢课退课等);

          3、选课上一半版本已经完成的工作:选课功能已经实现,实现过程中未用缓存,出现问题操作慢服务器的压力大;

          4、现在需要做的工作:加入缓存,提高性能。

     二、针对实现遇到问题的探讨:

          1、为什么要用Redis?

          探讨结果:所有技术的选用根据本身业务而定,适合业务的技术才是最好的技!上一版本没有采用缓存导致所有的操作都与数据库打交道,大家都知道频繁与数据库建立连接和关闭连接是十分耗时的,而选课是对数据的操作十分频繁;导致了服务器的压力特别大,为了解决这个问题采用Redis!

          2、Redis用在哪块儿?

          探讨结果:选课大致流程:教师配置相关课程—学生登录—根据自己学号查询到自己可以选择的相关课程—进行课程选取操作—退出系统;之前是所有的数据及操作都是在数据库中,现在教师配置完相应的课程后将相关信息存到数据库一份相应的往Redis中放一份,这样当学生在选课的时候会从Redis中读到选课的相关信息,选和退选等等操作不再和数据库打交道而直接和Redis打交道,最终选完后将Redis中的数据写到数据库中即可。(注:学生相关的校验等等细节略去)           

          3、学生登录后进入选课的界面,自己属于哪个年级和班级以及一些基本信息不变,而需要进行选课以及退选时课程时课程的容量有变化;这些显示都在一个页面上之前实现是每次课程改变要刷新整个页面,如何做到只让课程的余量改变?

          探讨结果:前台每次Ajax获取改变的整个页面的Model从而为页面所有信息赋值,现在可以在调用Ajax的时候做个判断,界面不变的文本框中是否有内容,如果有内容说明不是第一次加载,这时只需要调用另外一个Ajax去把课程容量取出即可,如果无内容则说明是第一次登录,这时将所有信息都获取到;这样一来大大的减少了对没必要的信息读取。

               4、选课中存在高并发问题,如何避免那?(最典型是课程容量问题,一个时间段大家都来抢课程,课程容量的更新过程便存在这个问题)

         探讨结果:用Redis的事物来防止高并发,当很多人都来操作容量的时候,大家都排着队一个执行完后另外一个才能再执行;这相比在数据库中上锁还是要快的,毕竟直接访问内存要比访问数据库少走了硬盘这个过程呗。这个过程测试目前还未做,需要进一步的测试来验证。

【总结】

      1、关于交流:和对一个事物认识相差不太多的人交流,效率和收获比较大;相反很大一部分交流是无效交流;要尽可能大的提高交流的效率则建立在双方对这个事物的有了一定的了解基础上。

      2、想法很重要,遇到问题有解决的想法比具体的实现其实更重要,当然具体的实现来验证自己的想法也是必不可少滴。

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 41
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

当年的春天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值