新入職的妹子問我Redis是如何實現點讚、取消點讚的?

2021-01-21 計算機java編程

基於 SpringCloud, 用戶發起點讚、取消點讚後先存入 Redis 中,再每隔兩小時從 Redis 讀取點讚數據寫入資料庫中做持久化存儲。

點讚功能在很多系統中都有,但別看功能小,想要做好需要考慮的東西還挺多的。

點讚、取消點讚是高頻次的操作,若每次都讀寫資料庫,大量的操作會影響資料庫性能,所以需要做緩存。

至於多久從 Redis 取一次數據存到資料庫中,根據項目的實際情況定吧,我是暫時設了兩個小時。

項目需求需要查看都誰點讚了,所以要存儲每個點讚的點讚人、被點讚人,不能簡單地做計數。

文章分四部分介紹:

Redis 緩存設計及實現資料庫設計資料庫操作開啟定時任務持久化存儲到資料庫一、Redis 緩存設計及實現

1.1 Redis 安裝及運行

Redis 安裝請自行查閱相關教程。

說下Docker 安裝運行 Redis

dockerrun-d-p6379:6379redis:4.0.8

如果已經安裝了 Redis,打開命令行,輸入啟動 Redis 的命令

redis-server

1.2 Redis 與 SpringBoot 項目的整合

1.在 pom.xml 中引入依賴

2.在啟動類上添加注釋 @EnableCaching

3.編寫 Redis 配置類 RedisConfig

至此 Redis 在 SpringBoot 項目中的配置已經完成,可以愉快的使用了。

1.3 Redis 的數據結構類型

Redis 可以存儲鍵與5種不同數據結構類型之間的映射,這5種數據結構類型分別為String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset(有序集合)。

下面來對這5種數據結構類型作簡單的介紹:

1.4 點讚數據在 Redis 中的存儲格式

用 Redis 存儲兩種數據,一種是記錄點讚人、被點讚人、點讚狀態的數據,另一種是每個用戶被點讚了多少次,做個簡單的計數。

由於需要記錄點讚人和被點讚人,還有點讚狀態(點讚、取消點讚),還要固定時間間隔取出 Redis 中所有點讚數據,分析了下 Redis 數據格式中 Hash 最合適。

因為 Hash 裡的數據都是存在一個鍵裡,可以通過這個鍵很方便的把所有的點讚數據都取出。這個鍵裡面的數據還可以存成鍵值對的形式,方便存入點讚人、被點讚人和點讚狀態。

設點讚人的 id 為 likedPostId,被點讚人的 id 為 likedUserId ,點讚時狀態為 1,取消點讚狀態為 0。將點讚人 id 和被點讚人 id 作為鍵,兩個 id 中間用 :: 隔開,點讚狀態作為值。

所以如果用戶點讚,存儲的鍵為:likedUserId::likedPostId,對應的值為 1 。取消點讚,存儲的鍵為:likedUserId::likedPostId,對應的值為 0 。取數據時把鍵用 :: 切開就得到了兩個id,也很方便。

在可視化工具 RDM 中看到的是這樣子

1.5 操作 Redis

將具體操作方法封裝到了 RedisService 接口裡

RedisService.java

實現類 RedisServiceImpl.java

用到的工具類和枚舉類

RedisKeyUtils, 用於根據一定規則生成 key

LikedStatusEnum 用戶點讚狀態的枚舉類

package com.solo.coderiver.user.enums;

二、資料庫設計

資料庫表中至少要包含三個欄位:被點讚用戶id,點讚用戶id,點讚狀態。再加上主鍵id,創建時間,修改時間就行了。

建表語句

對應的對象 UserLike

三、資料庫操作

操作資料庫同樣封裝在接口中

LikedService

LikedServiceImpl 實現類

資料庫的操作就這些,主要還是增刪改查。

四、開啟定時任務持久化存儲到資料庫

定時任務 Quartz 很強大,就用它了。

Quartz 使用步驟:

添加依賴

2.編寫配置文件

3.編寫執行任務的類繼承自 QuartzJobBean

在定時任務中直接調用 LikedService 封裝的方法完成數據同步。

以上就是點讚功能的設計與實現,不足之處還請各位大佬多多指教。

如有更好的實現方案歡迎在評論區交流…

相關焦點

  • Redis是如何實現點讚、取消點讚的?
    一個牛逼的多級緩存實現方案基於redis分布式鎖實現「秒殺」(含代碼)百億數據量下,掌握這些Redis技巧你就能Hold全場9個提升逼格的redis命令get個新技能:redis實現自動補全利用 Redis 實現「附近的人」功能!私藏!我是如何用redis做實時訂閱推送的?
  • 那些點讚又取消的人,一般是這樣想的
    點擊右上角藍字就可以關注我哦【 愛的小心翼翼,才更顯情誼的珍貴。多一點怕太多,少一點怕不足,進一步怕失去,退一步怕薄寡。有的人深愛著你,卻害怕去愛,怕不夠好,怕負擔不起,更怕得到後的失去,總是非常寶貝那份愛意。】
  • 王櫟鑫疑似新戀情曝光,點讚相關動態後取消,在線卻不願回應?
    之前採訪中就被問到最想做當下卻不能做的事情,王櫟鑫直言「離婚」,還有之前節目中曾說過,會離開吳雅婷,結果卻是真的如此,這更加令人懷疑王櫟鑫離婚的真相了。最近王櫟鑫就被媒體拍攝到,與一位女生在街頭拉著行李箱現身,在前往超市買完打火機,就前往酒店了。王櫟鑫和一位神秘女子的現身,更是讓大家懷疑與吳雅婷離婚背後有什麼事情了。
  • 抖音取消贊對方知道嗎 點完贊再取消有什麼影響會留痕跡嗎
    18183首頁 抖音取消贊對方知道嗎 點完贊再取消有什麼影響會留痕跡嗎 抖音取消贊對方知道嗎 點完贊再取消有什麼影響會留痕跡嗎 來源:www.18183
  • Facebook宣布重新設計品牌專頁:簡化布局,取消點讚
    值得注意的是,全新的品牌專頁還將取消 「點讚」按鈕,轉而專注於粉絲數,從而更直接地衡量某個品牌專頁能觸達多少粉絲。  去年夏季就有媒體報導了 Facebook 將全面升級品牌專頁的消息。當時,Facebook 開始測試品牌專頁的新界面,參與測試的包括演員、作家和創作者,以及一些商業性的英文品牌專頁。
  • Facebook宣布重新設計品牌專頁:簡化布局 取消點讚
    值得注意的是,全新的品牌專頁還將取消「點讚」按鈕,轉而專注於粉絲數,從而更直接地衡量某個品牌專頁能觸達多少粉絲。  去年夏季就有媒體報導了Facebook將全面升級品牌專頁的消息。當時,Facebook開始測試品牌專頁的新界面,參與測試的包括演員、作家和創作者,以及一些商業性的英文品牌專頁。
  • 吉利默不作聲取消「回字紋」標!換上新標「極星」獲18個國家點讚
    吉利默不作聲取消「回字紋」標!換上新標「極星」獲18個國家點讚在如今的國內汽車市場,說到咱們的自主品牌,那吉利汽車肯定是一個繞不過去的話題了,因為在最近幾年,吉利品牌的進步那是有目共睹的,旗下有著很多走俏的車型,且自打吉利收購沃爾沃品牌之後,其造車工藝也是更上一層樓,推出來的車型在品控和產品力上面已經是有著質的飛躍,而在之後它們兩家也是終於推出一款結合體的豪華汽車品牌,這個全新的豪華品牌就是曾經沃爾沃以高性能著稱的
  • 社交規則:為什麼你總給別人微信點讚,卻很少有人給你點讚?
    點讚是微信朋友圈一個很有創意的設計,只需輕輕一點變實現了人與人之間的互動。有的人非常喜歡給他人點讚,無論別人發什麼都會贊一下。但他們也發現很少有人給他點讚。於是他就很鬱悶:為什麼我總給你們點讚,你們卻不給我點讚?今天我們就來談談這個話題。一、點讚太多,你的贊會貶值如果你精心發了一條朋友圈,發現有很多從來沒有給自己點過贊的人,這次都為你點讚,你的心裡成績感肯定是滿滿的。
  • 如何用英文給別人「點讚」
    如何用英文給別人「點讚」 愛思英語 2014-12-10 14:45
  • 你的微博莫名給人點讚?新浪官方做出回應
    近期,有用戶在使用新浪微博時,發現在自己的點讚記錄中,莫名出現了幾十個非本人操作的異常點讚,點讚的微博帳號以營銷號和明星號為主,也有部分認證為公共機構的帳號。來自浙江金華的吳女士告訴記者,她的微博出現這樣的情況已經一個多月了,異常點讚對她的日常社交造成了影響。真的很煩的,都是一些就是色情或者什麼的那種內容,那我一個女生,微博是我社交的一個方式,你說我在別人的首頁上全部都是這些東西,你覺得對我個人造成的影響是什麼!而且我我這個微博用了好幾年,註銷我也不是很願意的,然後這個事情就很尷尬。
  • 抖音怎麼查看誰點讚自己 查看點讚入口與位置圖文教程
    現在玩抖音的夥伴,可以說是天天都會刷一波短視頻,看到喜歡的短視頻還可以進行點讚功能,為你喜歡的小哥哥小姐姐點讚吧!那麼被點讚的夥伴,怎麼查看點讚自己的人呢?不知道的夥伴,可以在西西看看相關的教程。  查看點讚教程:  進入到抖音的個人中心後,可以在頭像下面第四行的左端看到「阿拉伯數字+獲贊」;
  • 完美公司入選「點讚2020我喜愛的中國品牌」
    6月10日,在「點讚2020我喜愛的中國品牌」暨「全球抗疫 品牌力量」經典案例發布會上,完美(中國)有限公司入選最受網友關注的「點讚2020我喜愛的中國品牌」。「點讚2020我喜愛的中國品牌」完美獎盃作為一家從事大健康科技產業的企業,完美公司依託數位化轉型戰略,在不斷深化改革創新的同時積極打造企業品牌,實現了品牌強度、影響力、美譽度、貢獻度等方面的全面提升。
  • 微信群點讚被領導訓斥?這4點教訓,你需要懂得
    微信群點讚被領導訓斥?這4點教訓,你需要懂得當我們入職一家公司的時候,在準備工作前,部門的領導會將我們拉進公司總群和一些部門群當中,在公司總群中,一般都是發一些比較重要的通知或者是文件,發布之後只要公司裡的同事或者是領導回復一下就好。
  • 五年級作文:為你點讚
    索隆,我為你點讚,為你的品質點讚!(孫智博廬山中學)篇三:為你點讚作文500字蘇軾,從古到今,一直都是一個傳奇人物。他雖與我時隔千年,可他卻仍值得我為他點讚。(夏藝軒顧國和外國語學校)篇五:為你點讚作文500字2020年是一個特殊的年頭,「新冠肺炎疫情」在全世界鬧得沸沸揚揚。多少人因為這一次疫情失去了美好的家庭?又有多少工廠、商業公司因為沒有收入而破產倒閉?
  • 微博自動關注點讚現象泛濫 如何避免這類情況發生
    筆者搜索微博發現@遊戲打折情報,為大家推薦了兩種方法,其一是點管理中心,我的應用,把不要的應用刪掉。這裡要注意的是:建議先取消所有的應用授權。不要以為正規應用就沒問題,某個應用的 appkey+secret 一旦洩露,等於將所有的授權用戶都出賣了,如果再劫持回調地址基本上就是控制了你的帳號。這樣心大的廠商還不少,所以建議你有莫名關注的情況,先全部取消授權試試。
  • 如何看待跟你關係好的人,朋友圈給別人點讚卻不點你呢?為什麼呢
    如何看待跟你關係好的人,朋友圈給別人點讚卻不點你呢?現如今,大家都不玩QQ了,改玩微信了,因為有一個神奇的點讚功能。熟悉的你不點,只看動態,不熟悉的你天天點讚。我們點讚別人的朋友圈動態,向那些微信行列中的陌生人傳遞了一個信息:我們有可能面對面沒有話題可聊,但是我們可能很欣賞他現在在做的這個事情。這其實是一種特別的語言,禮貌又不會顯得僵硬。很多人甚至會因為點讚,來衡量我跟對方的熟悉程度。這一部分的人,跟那些點讚陌生人的就不太一樣。有些人會認為我們這麼好,你竟然沒及時點讚我的朋友圈。
  • 社交互動創新|從點讚到擊掌
    如何在產品功能上做更多的創新,並體現出設計價值一直是設計師關注的話題。尤其是在體系成熟的產品裡,如何對完善的基本框架和功能進行突破、如何挖掘用戶的互動訴求並拓展更多的互動行為等,對於設計師來講都是很大的挑戰。
  • 快手可以看到都是誰給自己點讚嗎 快手怎麼看誰給自己點讚
    快手現在很火,那麼我們在玩快手的時候,如果看到一些好的視頻或者是自己有同感的評論,都會給點個讚,那麼,快手可以看到都是誰給自己點讚嗎?快手怎麼看誰給自己點讚?一起來看看吧 快手現在很火,那麼我們在玩快手的時候,如果看到一些好的視頻或者是自己有同感的評論,都會給點個讚,那麼,快手可以看到都是誰給自己點讚嗎
  • 重慶現彩色斑馬線 點讚文明禮讓
    重慶現彩色斑馬線 點讚文明禮讓 2015-07-19 16:24:09來源:中國新聞網作者:${中新記者姓名}責任編輯: 圖為寫有「禮讓斑馬線,文明我點讚」的彩色斑馬線。
  • 鄧海建:微博「被點讚」,是漏洞還是生意?求解
    微博點讚雖然是個很沒有技術含量的活兒,卻在很大程度上表白了博主的趣味、態度、偏好,乃至三觀。正因如此,在微博社交規則中,很多人喜歡藉助點讚內容來追溯博主本人的「人格畫像」。因此,如果有一天,你突然發現自己或者好友給大量劣質內容、甚至是淫穢色情微博點了贊,內心恐怕是崩潰或驚悚的。莫名其妙給亂七八糟的內容點讚、又莫名其妙批量添加了諸多營銷號,這樣的遭遇,大概玩微博的人多經歷過。