欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 基于redis實現的點贊功能設計思路詳解

基于redis實現的點贊功能設計思路詳解

熱門標簽:最簡單的百度地圖標注 地圖標注如何即時生效 百度商家地圖標注怎么做 竹間科技AI電銷機器人 西藏教育智能外呼系統價格 小紅書怎么地圖標注店 玄武湖地圖標注 太原營銷外呼系統 地圖標注費用

前言

點贊其實是一個很有意思的功能。基本的設計思路有大致兩種, 一種自然是用mysql等

數據庫直接落地存儲, 另外一種就是利用點贊的業務特征來扔到redis(或memcache)中, 然后離線刷回mysql等。

直接寫入Mysql

直接寫入Mysql是最簡單的做法。

做兩個表即可,

1、post_like

記錄文章被贊的次數,已有多少人贊過這種數據就可以直接從表中查到;

2、user_like_post

記錄用戶贊過了哪些文章, 當打開文章列表時,顯示的有沒有贊過的數據就在這里面;

缺點

1、數據庫讀寫壓力大

熱門文章會有很多用戶點贊,甚至是短時間內被大量點贊, 直接操作數據庫從長久來看不是很理想的做法。

redis存儲隨后批量刷回數據庫

redis主要的特點就是快, 畢竟主要數據都在內存嘛;

另外為啥我選擇redis而不是memcache的主要原因在于redis支持更多的數據類型, 例如hash, set, zset等。

下面具體的會用到這幾個類型。

優點

1、性能高

2、緩解數據庫讀寫壓力

其實我更多的在于緩解寫壓力, 真的讀壓力, 通過mysql主從甚至通過加入redis對熱點數據做緩存都可以解決,

寫壓力對于前面的方案確實是不大好使。

缺點

1、開發復雜

這個比直接寫mysql的方案要復雜很多, 需要考慮的地方也很多;

2、不能保證數據安全性

redis掛掉的時候會丟失數據, 同時不及時同步redis中的數據, 可能會在redis內存置換的時候被淘汰掉;

不過對于我們點贊而已, 稍微丟失一點數據問題不大;

具體設計

Mysql設計

這一塊和寫入寫mysql是一樣的,畢竟是要落地存儲的。

所以還是同樣的需要post_like, user_like_post這兩表存儲文章被點贊的個數(等統計), 用戶對那些文章點了贊(取消贊)。

這兩表分別通過post_id, user_id進行關聯。

redis設計部分:

post_set

在redis中弄一個set存放所有被點贊的文章

post_user_like_set_{$post_id}

對每個post以post_id作為key, 搞一個set存放所有對該post點贊的用戶;

post_user_like_{$post_id}_{$user_id}

將每個用戶對每個post的點贊情況放到一個hash里面去, hash的字段就

隨意跟進需求來處理就行了。

為啥用hash

只所以用hash是因為完全可以用hash來存儲一個點贊的對象, 對應數據庫的一行記錄。

當然有同學會說用key, value也可以, 將所有的數據序列化(json_encode等)

后全部放到value里面去。 反復序列化也是一個很大的開銷不是, hash可以很

方便的修改某個字段, 而序列化和反序列化的操作。

post_{$post_id}_counter

對每個post維護一個計數器, 用來記錄當前在redis中的點贊數,

這里我們只用counter記錄尚未同步到mysql中的點贊數(可以為負), 每次

刷回mysql中時將counter中的數據和數據庫已有的贊數相加即可。

用戶點贊/取消贊

獲取user_id, post_id, 查詢該用戶是否已經點過贊, 已點過則不允許再次點贊,

或者設計為前端允許用戶點, 只是后臺不重復計算;

這里需要注意的是用戶點贊的記錄可能在數據庫中, 也可能在緩存中, 所以查詢的時候

緩存和數據庫都要查詢, 緩存沒有再查詢數據庫。

將用戶的點贊/取消贊的情況記錄在redis中, 具體為:

1、寫入post_set

post_id寫入post_set

2、寫入post_user_like_set_{$post_id}

user_id寫入post_user_like_set_{$post_id}

3、寫入post_user_like_{$post_id}_{$user_id}

將用戶點贊數據, 例如贊狀態, post_id, user_id, ctime(操作時間), mtime(修改時間)寫入post_user_like_{$post_id}_{$user_id}

4、更新post_{$post_id}_counter

更新post_{$post_id}_counter, 這里的更新稍晚復雜一點, 需要和前面一樣先獲取當前用戶是否對這個post點過贊

如果點過, 并且本次是取消贊, counter減一, 如果沒點過, 本次是點贊, counter加一。

如果原來是取消贊的情況, 本次是點贊, counter加一。

同步刷回數據庫

循環從post_set中pop出來一個post_id至到空

    根據{$post_id} , 每次從post_user_like_set_{$post_id}中pop出來一個user_id直到空

        根據post_id, user_id, 直接獲取對應的hash表的內容(post_user_like_{$post_id}_{$user_id}

        將hash表中的數據寫入user_like_post表中

        將post_{$post_id}_counter中的數據和post_like中的數據相加, 將結果寫入到post_like表中

頁面展示

1、查詢用戶點贊情況

前面已經說過, 需要同時查詢redis和mysql

2、查詢post點贊統計

同樣需要查詢redis中的post_{$post_id}_counter和mysql的post_like表, 并將兩者相加

得到的結果才是正確的結果

總結

解決了mysql讀寫的問題

但沒有針對用戶量較大的場景考慮分表的設計, 可以考慮針對user_id或者post_id進行分表

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • SpringBoot+Vue+Redis實現單點登錄(一處登錄另一處退出登錄)
  • SpringBoot Redis配置Fastjson進行序列化和反序列化實現
  • SpringBoot集成Redisson實現分布式鎖的方法示例
  • springboot整合redis集群過程解析
  • springboot +redis 實現點贊、瀏覽、收藏、評論等數量的增減操作

標簽:廣東 景德鎮 澳門 香港 林芝 唐山 揚州 贛州

巨人網絡通訊聲明:本文標題《基于redis實現的點贊功能設計思路詳解》,本文關鍵詞  基于,redis,實現,的,點贊,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于redis實現的點贊功能設計思路詳解》相關的同類信息!
  • 本頁收集關于基于redis實現的點贊功能設計思路詳解的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    五月天一区二区三区| 国产成人午夜99999| 国产精品嫩草69影院| 色激情天天射综合网| 国产精品狼人久久影院观看方式| 久久99精品久久久久久久久久久久 | 国产乱码精品一区二区三区五月婷| 国产伦精品一区二区三区妓女| 欧美日韩黄色影视| 亚洲国产成人91porn| 亚洲欧美日韩色| 欧美日本精品一区二区三区| 亚洲一区二三区| 亚洲熟女一区二区三区| 欧美三级在线播放| 亚洲第一主播视频| 亚洲国产精品无码久久久久高潮| 91精品视频网| 蜜桃av一区二区| 51妺嘿嘿午夜福利| 国产清纯在线一区二区www| 国产精品一区二区不卡| 亚洲波多野结衣| 亚洲欧洲在线观看av| 99久久久无码国产精品| 久久综合色之久久综合| 日韩欧美一二三四区| 日本在线不卡视频一二三区| 欧美一级片黄色| 日韩欧美中文字幕精品| 久久se这里有精品| 麻豆明星ai换脸视频| 自拍偷拍亚洲欧美日韩| 91碰在线视频| 欧美一区二区三区视频在线| 久久99精品国产麻豆婷婷洗澡| 人妻精品久久久久中文字幕| 欧美在线一级片| 日韩欧美国产综合一区 | 成人av电影在线| 在线观看精品一区| 日韩电影在线观看一区| 日本美女xxx| 综合久久久久久| 18禁一区二区三区| 日韩欧美国产不卡| 丰满亚洲少妇av| 欧美无乱码久久久免费午夜一区| 日韩电影免费在线| 成人一级片免费看| 亚洲美女免费在线| 风间由美一二三区av片| 国产欧美日韩不卡| 日本女人性视频| 精品日产卡一卡二卡麻豆| 国产黄人亚洲片| 欧美性一级生活| 久久精品国产精品青草| 精品无码久久久久成人漫画| 亚洲午夜激情网站| 毛片aaaaaa| 夜色激情一区二区| 精品无人区无码乱码毛片国产| 国产精品毛片高清在线完整版| 制服丝袜av在线| 国产亚洲va综合人人澡精品 | 成人免费视频网站入口::| 亚洲二区在线视频| 成人18视频免费69| 肉色丝袜一区二区| 日韩高清dvd碟片| 日韩国产欧美在线视频| 国产精品视频一区二区三| 日韩电影在线观看电影| 91精品国产高清一区二区三蜜臀| 首页国产丝袜综合| 国产97免费视频| 久久国产精品色| 欧美亚洲国产怡红院影院| 精品一区二区三区免费视频| 在线免费不卡电影| 国产一区不卡视频| 日韩一区二区三区视频在线| 9人人澡人人爽人人精品| 欧美mv日韩mv国产网站app| 91免费小视频| 欧美激情一区二区在线| 日韩一级视频在线观看| 亚洲精品欧美二区三区中文字幕| 国产伦理片在线观看| 亚洲第一搞黄网站| 一本大道久久精品懂色aⅴ| 久久99精品国产麻豆婷婷洗澡| 欧美日韩在线三区| 成人福利电影精品一区二区在线观看| 欧美成人官网二区| 逼特逼视频在线观看| 亚洲天堂a在线| 长河落日免费高清观看| 日本伊人精品一区二区三区观看方式 | 欧美一区二区三区白人| 97精品久久久久中文字幕| 国产日韩欧美亚洲| 无码一区二区三区在线| 亚洲第一综合色| 欧美色电影在线| 成人av手机在线观看| 欧美经典一区二区| 亚洲精品国产精品国自产网站| 日韩中文字幕1| 欧美精品乱码久久久久久 | 粉嫩欧美一区二区三区高清影视| 精品国产一二三区| 99久久国产精| 日韩精品一二三四| 欧美乱妇20p| 麻豆免费在线观看视频| 亚洲精品乱码久久久久久黑人| 成人免费毛片xxx| 国产成人免费视频网站高清观看视频 | 亚洲成人精品在线播放| 亚洲日韩欧美一区二区在线| 亚洲天堂黄色片| 国产成人av电影在线观看| 国产午夜精品美女毛片视频| 亚洲ⅴ国产v天堂a无码二区| 极品少妇xxxx精品少妇| 精品福利一区二区三区 | 亚洲福利一区二区| 欧美日韩不卡一区二区| 91亚洲一线产区二线产区 | 一区二区激情视频| 91电影在线观看| 四虎国产精品免费| 亚洲国产一区二区a毛片| 欧美日韩国产首页在线观看| 国产成人精品一区二区三区在线观看| 一区二区三区中文在线观看| 欧洲精品一区二区三区在线观看| 91在线porny国产在线看| 亚洲精品欧美激情| 欧美日韩国产在线观看| 在线观看免费视频黄| 日本欧美一区二区三区乱码| 精品久久国产老人久久综合| 日韩福利在线视频| 高清beeg欧美| 亚洲精品亚洲人成人网在线播放| 欧美性色欧美a在线播放| a级片在线观看视频| 日韩av电影天堂| 久久只精品国产| 午夜爽爽爽男女免费观看| av亚洲精华国产精华| 亚洲一区二区中文在线| 日韩一区国产二区欧美三区| 永久免费成人代码| 成人丝袜高跟foot| 亚洲综合色噜噜狠狠| 日韩一区二区电影| 亚洲女人毛茸茸高潮| 99热在这里有精品免费| 亚洲成人一区在线| 欧美r级在线观看| 男人操女人的视频网站| 男人的天堂免费| 美女久久久精品| 国产精品情趣视频| 欧美日韩亚洲综合一区二区三区| 中文在线永久免费观看| 国产一区二区调教| 一区二区在线电影| 欧美变态tickling挠脚心| 日本一级片免费| 国产ts在线观看| 久久99日本精品| 亚洲欧美视频在线观看视频| 6080日韩午夜伦伦午夜伦| 五月天精品在线| 91美女蜜桃在线| 久久99精品国产| 亚洲激情在线激情| 欧美精品一区男女天堂| 色哟哟国产精品免费观看| 91精品国产自产| 成人h动漫精品| 男女视频一区二区| 亚洲色图视频网| 亚洲精品一区二区三区99| 在线观看国产一区二区| 精品国产成人亚洲午夜福利| 91美女蜜桃在线| 国产精品综合在线视频| 亚洲午夜精品在线| 久久精品夜色噜噜亚洲aⅴ| 欧美日韩精品一区视频| 国产精品suv一区二区88| aaaaa黄色片| 国产精品资源在线| 首页欧美精品中文字幕|