Redis进行数据排序

大学时做过一个在线答题系统,考生在规定时间内作答100道不定项选择题,考试结束后系统自动算分。

因为很多考生同时作答,答案都需要往同一个数据表里面写,会因为数据表被锁而导致响应速度过慢。因此,采用Redis缓存技术将考生的答题信息记录在服务器内存中,在考试结束之后再写入到MySQL数据库中。

当时在设计系统时,计算考生分数并排名是在数据写入到MySQL数据库之后进行的。也就是说需要将考生的答题记录取出,然后计算分数,再将考生的分数写入到数据库中。这样设计有一个较大的问题就是,只能在考试结束之后,才能结算的到考生的分数,而不能在考试过程中,实时的显示考生的成绩和排名。

前一段时间在面试中,接触到了Redis排序的知识,发现可以对原来的系统进行如下优化:

  1. 在Redis中为每一位考生维护考号和成绩的键值对,每当考生修改答案时,也随之修改考生的成绩。
  2. 通过Redis的排序操作,获得按照考生成绩排序的考号结果,进行显示。
lpush users 201101
lpush users 201102
lpush users 201103
set grades:201101 98
set grades:201102 79
set grades:201103 89
sort users by grades:* 
sort users by grades:* get grades:*

参考文章:
http://www.cnblogs.com/redcreen/archive/2011/02/15/1955226.html
http://doc.redisfans.com/key/sort.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值