十五 Redis 部落格構建

2021-09-05 10:58:10 字數 2513 閱讀 7643

主要功能

使用者賬號

發布文章

在主頁檢視文章

根據分類來檢視文章

使用者賬號

註冊乙個部落格 賬號需要:

1. 賬號(account),可以包含英文或數字,不能有重複,會被部落格用作唯一的 id 。

2. 密碼。

保證賬號的唯一性可以使用之前介 紹過的 uniqueset 類來實現,而儲存使用者資訊則可以使用雜湊來儲存。

儲存使用者資訊

對於每個使用者,程式會根據使用者的使用者名稱,建立乙個格式為 blog::user::格式的雜湊鍵來儲

存使用者的相關資訊。 舉個例子,對於賬號為「zhang19870511」、密碼為「12345」、暱稱為「張三」使用者,程式將執行以下命令來

儲存該使用者的資訊:

hmset blog::user::zhang19870511

account zhang19870511

password 12345

nickname 張三

我們將使用者賬號的相關操作抽象成

user 類api

user 類使用示例

>>> user = user(client)

>>> user.create(『zhang19870511』, 『12345』, 『張三』)

>>> user.get_by_account(『zhang19870511』)

>>> user.try_login(『『zhang19870511』, 『12345』)

發布文章

發布文章的實現原理 每篇文章由標題、內容、分類、作者、發布時間等資訊組成,對於每篇文章,程式會使用 idgenerator 類

示例:hmset blog::post::9125 id 9125

title 「前後端分離的思考與實踐(六)」

content 「關於前後端分享的思考,......」

category 「前端技術」

author_account 「jianfei」

time 1410239558

>>> post = post(client)

>>> id = post.create(「前後端分離的思考與實踐(六)」, 「關於前後端分享的思考,......」,

「前端技術」,

在主頁檢視文

主頁文章的實現原理

主頁會按照文章的 發布日期,按從新到舊的 順序來排列部落格包含的文章。

為了儲存這些文章,程式會使用乙個名為 blog::index 的列表來儲存部落格文章,每當有新文章發布的 時候,程式就會將新文章的 id 推入到這個列表裡面。

舉個例子,當使用者新建立了 id 為 9125 的文章時,程式將執行以下命令,將文章推入到首頁的文章 列表中:

lpush blog::index 9125

當使用者訪問主頁的時候,程式會使用 lrange 取出列表中最近發布的一些文章,並將它們展示給用

戶**。

我們可以將針對主頁文章列表的操作抽象為 index類

>>> index = index(client)

>>> index.push(『10086』)

>>> index.push(『10087』)

>>> index.paging(1, 10)

[『10087』, 『10086』, ...]

根據分類檢視文章

文章分類的實現原理

對於部落格的每個分類,程式使用乙個格式為 blog::category::的列表來儲存屬於 name 分類

的所有文章。

每當有新的文章發布時,程式就會使用 lpush 命令,將新文章的 id 推入到相應的分類文章列表裡

面,這樣我們就會得到乙個按照 發布時間從新到舊來排列的文章列表。 舉個例子,當屬於「前端技術」分類的新文章 9125發布時,程式將執行以下命令,將文章推入到「前端技

術」對應的文章列表裡面:

lpush blog::category::前端技術 9125

我們可以將針對部落格分類的操作抽象到 category 類裡面。

category 示例

>>> front_end = category(client, 『前端技術』)

>>> front_end.include_post(『12345』)

>>> front_end.include_post(『128256』)

>>> front_end.include_post(『251474』)

>>> front_end.count_post() 3

>>> front_end.paging(1, 10)

[『251474』, 『128256』, 『12345』]

commentlist 類稍作修改,就可以在這個部落格程式裡面重用它

各項功能以及他們的實現原理

Redis學習(十五)Redis刪除策略

刪除的是過期資料,設定期限且時間已經到期的資料 ttl key結果 如果我們監控每一條資料的時間到期,這樣的守護程序會占用cpu使redis的效能下降,如果我們不處理過期資料,也會導致資料過多占用記憶體導致redis將記憶體撐爆宕機,所以刪除策略的目標並不是要完全的刪除過期資料,而是在刪除過期資料和...

Redis 十五 訂閱發布

這個其實很簡單。首先看封裝的redishelper類裡的訂閱方法,這裡支援傳入委託方法。public void subscribe string subchannel,actionhandler null else 再看發布方法 public long publish string channel,...

python 構建部落格列表

在部落格全部備份到本地的情況下,如何根據本地檔案構建部落格列表呢?import re,os import urllib.request path d 我的檔案 部落格備份 2020年3月7日 path2 tmp path path path2 filenames os.listdir path s ...