Redis系列學習筆記14 微博功能分析

來源:互聯網
上載者:User
微博功能分析 UniqueSet 類
API 作用 實現原理
UniqueSet(client, key) 設定唯一集合的用戶端和鍵。
is_include(element) 檢查元素是否存在於唯一集合。 SISMEMBER
add(element) 將元素添加到唯一集合。 SADD
user 類
API 作用 實現原理
User(client) 設定執行操作時要使用的用戶端。
create(name, email, password) 根據給定的名字、郵箱和密碼,建立一個新的使用者,返回使用者的 ID 。 使用 HMSET 儲存使用者資訊,使用 HSET 在 email 和ID 之間進行關聯。
try_login(email, password) 嘗試使用給定的郵箱和密碼進行登入,如果成功的話,返回該帳號的ID、使用者名稱等資訊。根據 email 尋找與之關聯的使用者識別碼 ,然後根據 ID 取出使用者資料,進行密碼對比。
使用者關係

關注與被關注 RelationShip 類

API 作用 實現原理
RelationShip(client) 設定關係類使用的用戶端。
follow(fans, target) 讓 fans 關注 target 。 將 fans 添加到 target 的粉絲集合裡面,將 target 添加到 fans 的關注集合裡面。
is_following(a, b) 檢查 a 是否正在關注 b 。 檢查 a 的關注集合是否包含 b 。
is_following_each_other(a, b) 檢查 a 和 b 是否關注了彼此。 檢查 a 的關注集合是否包含 b ,以及 b 的關注集合是否包含 a 。
get_all_following(user) 返回使用者關注的所有人。 返回使用者的整個關注集合。
get_all_fans(user) 返回使用者的所有粉絲。 返回使用者的整個粉絲集合。
common_following(a, b) 返回 a 和 b 共同關注的人。 計算 a 和 b 的關注集合的並集。
發微博

儲存微博並將它廣播至各個時間軸 Message 類的實現

API 作用 實現原理
Message(client) 設定用戶端。
create(author, content) 儲存一條微博,並返回該微博的 ID 。 使用 HMSET 將微博的相關資訊儲存到一個散列裡面。
get_by_id(message_id) 根據 ID 尋找微博。 使用 HGETALL 擷取儲存在散列裡面的微博資訊。
時間軸

按照發表時間的先後順序來儲存微博

程式會為每個使用者儲存兩條時間軸: 定製時間軸,包含了使用者自己以及使用者正在關注的人發送的微博,鍵名為 weibo::user::id::custom_timeline 。 個人時間軸,只包含使用者自己發送的微博,鍵名為weibo::user::id::personal_timeline 。 Timeline 類

API 作用 實現原理
Timeline(client) 設定用戶端。
custom_push(user_id, msg_id, time) 將微博推入到使用者的定製時間軸裡面。 使用 ZADD 將微博 ID 添加到代表定製時間軸的有序集合裡面。
personal_push(user_id, msg_id,time) 將微博推入到使用者的個人時間軸裡面。 使用 ZADD 將微博 ID 添加到代表個人時間軸的有序集合裡面。
broadcast(msg_id, time, *fans_ids) 將微博推入到所有給定使用者的定製時間軸裡面。 遍曆傳入的所有使用者識別碼 ,對每個ID 都執行一次 custom_push 。
custom_paging(user_id, n, count) 按每頁 count 條微博計算,擷取使用者定製時間軸第 n 頁的微博。 使用 ZREVRANGE 以從新到舊的順序取出有序集合儲存的微博 ID 。
personal_paging(user_id, n, count) 擷取使用者個人時間軸第 n 頁的微博,按每頁 count 條微博計算。 使用 ZREVRANGE 以從新到舊的順序取出有序集合儲存的微博 ID 。
為微博點贊

支援自己喜歡的微博 LikeMessage 類的實現

API 作用 實現原理
LikeMessage(client, msg_id) 設定用戶端和要進行操作的微博。
like(user_id) 使用者對微博點贊。 將使用者識別碼 添加到集合裡面。
is_liking(user_id) 檢查使用者是否贊了該微博。 使用 SISMEMBER 檢查使用者識別碼是否存在於集合。
undo(user_id) 取消使用者的點贊。 使用 SREM 將使用者識別碼 從集合中移除。
count() 擷取該微博的點贊人數。 對集合執行 SCARD 。
get_all_liking_user() 返回所有贊了該微博的使用者。 對集合執行 SMEMBERS 。
評論微博

對微博內容進行討論 Comment 類

API 作用 實現原理
Comment(client) 設定用戶端。
create(author, content) 建立評論。 使用 HMSET 將評論儲存到散列裡面。
get_by_id(comment_id) 擷取指定的評論。 使用 HGETALL 擷取散列儲存的評論資訊。
CommentList 類
API 作用 實現原理
CommentList(client, message_id) 設定用戶端以及被評論的微博。
push(comment_id) 為微博添加評論。 使用 LPUSH 命令將評論ID推入到列表裡面。
count() 擷取微博目前的評論數量。 LLEN
paging(number, count) 按每頁 count 條評論計算,擷取該微博第 number 頁上的評論。 LRANGE
轉寄微博

在一條微博裡面引用另一條微博

修改之前發微博的介面,改為:create(author, content, origin_message_id=None)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.