主要功能使用者賬號
發布文章
在主頁檢視文章
根據分類來檢視文章
使用者賬號
註冊乙個部落格 賬號需要:
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 ...