Redis学习小作业

交作业

Redis 修改抢选课
1.曾经的项目是所有的查询和新增都直接读写数据库
2.学习了Redis尝试去改造一下
基本流程
图片:

在这里插入图片描述
大体流程就是就是这样,我改造的是学生选课部分。

开始

学生查询课程信息

学生频繁查询课程信息列表 , 对课程信息列表做了缓存
把课程id 作为key,上限人数作业value

//当课程信息的缓存不在的时候把信息保存到redis
if(!jedis.exists(courseKey)){
   jedis.set(courseKey,eachRecord.get("upper").toString());
   JedisUtils.expire(courseKey,60*60);
}
学生开始选课

1)校验是否计划开启状态中
在计划开启是把进行中的计划id,保存到redis 中。
学生端直接取redis的值来校验

       Jedis jedis = JedisUtils.getJedis();
       if (!jedis.exists(key+classId)) {
        	System.out.println( "选课计划尚未开启");
        }

2)校验同一个用户连点选课按钮

  	// 验证是否重复选课
      long times = jedis.incrBy(selectKey,1);
      // 设置过期时间
      JedisUtils.expire(selectKey,10);
      if(times != 1){
  		System.out.println("操作过于频繁");
      }

3)学生不能选超了的校验

  	long value = jedis.incrBy(courseKey,-1);
  	if(value<0){
  		System.out.println("课程人数已满");
  		jedis.incrBy(courseKey,1);
  	}

4) 最后保存学生选课信息了 用mq啊 redis啊 直接写保存接口都行。

总结

我主要改动点,之前学生选课的校验都是通过直接操作数据库来校验,学生是否存在选课的资格,改成了操作redis来校验学生选课的校验,和保证数据的正确性。
主要使用incrBy的方法来保存抢课人数不会超出设置和保存用户频繁操作。
学习之路还长,用的比较粗糙,加油!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值