【django】使用Redis数据库记录访问量数据,SQLite数据库记录博客的数据

22 篇文章 0 订阅
2 篇文章 0 订阅

使用原来的SQLite数据库:

访问量自增,然后保存入数据库

# 法1:Model直接:自定义数据类型 存储访问量
# article.viewers_count += 1
article.viewers_count = total_views
article.save()          # 临时变量保存入数据库

 

使用Redis数据库

# 3种方法记录访问量:
# Redis数据库:
# 下面2个变量都是用于记录 访问量的,有点冗余


设置键值对:自增,存储访问量      article:article.id:views   对应   数值  
# 法2:incr函数键值递增,article:id:views的方式命名一个键
total_views = r.incr("article:{}:views".format(article.id))
读取值:
r.get("article:{}:views".format(article.id))

定义一个表格,用于记录与查询,    article.id  对应  amount
# 法3:重新定义一个 键对值, 用于记录访问量
r.zincrby(name='article_ranking_table', amount=1, value=article.id)
# 访问量排序
article_ranking = r.zrange(name='article_ranking_table', start=0, end=-1, desc=True)[:10]
article_ranking_ids = [int(id) for id in article_ranking]
most_viewed = list(ArticlePost.objects.filter(id__in=article_ranking_ids))
most_viewed.sort(key=lambda x: article_ranking_ids.index(x.id))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值