Redis进行数据排序

版权声明:只要有树叶飞舞的地方,火就会燃烧,火的影子照耀着村子,新的树叶就会发芽。 https://blog.csdn.net/koastal/article/details/54193506

大学时做过一个在线答题系统,考生在规定时间内作答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

阅读更多
换一批

没有更多推荐了,返回首页