【django】使用Redis數據庫記錄訪問量數據,SQLite數據庫記錄博客的數據

使用原來的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))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章