【django】redis 最热文章排名

3、最后回顾一下,取出阅读数最大的十篇文章为什么用到4条语句:

 44     article_ranking = r.zrange("article_ranking", 0, -1, desc=True)[:10]
 45     article_ranking_ids = [int(id) for id in article_ranking]
 46     most_viewed = list(ArticlePost.objects.filter(id__in=article_ranking_ids))
 47     most_viewed.sort(key=lambda x: article_ranking_ids.index(x.id))
  1. 从sorted_set里面取出排名前10的10个对象,列表返回,列表的元素是articleid,而不是article本身
  2. article_id是str,把str转成int。
  3. 拿着10个article_id组成的列表筛选出10个article的列表,filter返回的结果又成乱序。
  4. 对10个article的列表按阅读量重新排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值