日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

redis存儲微博點贊的人,如何存儲?

瀏覽:209日期:2022-06-25 17:59:10

問題描述

比如說有一個微博的TID是1。 UID為1,2,3,4,5,6,7,8,9的用戶都給這個微博點贊了。用redis緩存框架存儲的話如何存儲。微博可能有幾十萬個。如果用

key->set(value) 這種形式的話 key是微博ID的標示 value是 [1,2,3,4,5,6,7,8,9]這種形式,這樣的話有多少個微博就有多少個K-V存儲。我想知道這樣會有什么弊端嗎?或者有什么更好的方法嗎?

問題解答

回答1:

可以采用多個HashSet存儲。每一條微博只是HashSet內的一個子key。增加贊的數量可以采用HIncrBy命令。把TID分塊,使得每個HashSet內的key不超過100個。官方文檔表示HashSet在內部元素小于一百個的時候采用線性存儲與掃描,跟同數據規模下樹形結構相比效率更高,更省內存。

例如:TID為123456的微博存在z:1234的HashSet中,其key為56。假設最新的微博活躍程度也較高,那么絕大多數情況下被調用的HashSet只有區區幾個,對CPU的緩存很友好。

如果要管理贊的用戶,可以自定義數據格式。在用戶數量少的時候把用戶列表整個內嵌到HashSet的值域中。用戶超過比如50人后將其單獨整理出一個Set,在HashSet里保存Set的key。例:

bash# 內嵌UID的情況hget z:1234 56> '1,2,3,4'...# 使用set的情況hget z:1234 56> 'UIDlist:10'smembers UIDlist:10> 1) '1'> 2) '2'> ...

由于絕大多數微博贊的用戶均比較少,HashSet可以節省出不少全局空間的key(全局key比HashSet的key更耗內存)。

關于 @賣掉內褲去上網 的回答:若采用in-place quicksort,50個用戶的手動排序效率非常高,因為在這個數據規模下數據緊密存放帶來的緩存友好性遠勝于Redis ZSet相對于手動排序帶來的提升。而贊的用戶升上去后就會自動適應成set或者zset,保證算法時間復雜度。如果還擔心效率,可以把排序好的UID列表重新寫回HashSet的一個value中,以后沒有數據改變的話直接使用。

究竟采用set還是zset還是要看樓主的需求。set加入一個成員的復雜度為O(1),zset是O(log N),但set就沒有排序功能了。

回答2:

不太推薦LS用HASH來存儲點贊的數據. 因為沒辦法進行排序(如果需要的話. 我想一定需要)

目前 我們是這樣處理的.

可以使用ZSET有序集合進行存儲. 理論上說一個ZSET中, 10W以內的數量并無任何鴨梨. 也就是說一條微博點贊的人數再10W以內(這是不可能的).

php$redis->ZADD('t:$tid:liked', time(), $uid); //$tid 為你的微博ID, $uid 為你的點贊人的UID//取出點贊的人(支持按照點贊時間來排序的哦:)).. 按照LSD的說的 HASH取出來的值沒有任何順序的.$uids = $redis->ZREVRANGE('t:$tid:liked', $offset, $max, TRUE); //倒序取值$uids = $redis->ZRANGE('t:$tid:liked', $offset, $max, TRUE); //順序取值//$offset 和 $max 這樣來算$pagesize = 20;$offset = ($page > 1) ? ($page - 1) * $pagesize : 0;$max = ($page * $pagesize) - 1;//一次性取出所有的這樣取.$total = $redis->ZCARD('t:$tid:liked');$uids = $redis->ZREVANGE('t:$tid:liked', 0, $total - 1, TRUE);//拿到的$uids 是一個array 哦..//判斷一個用戶是否點贊了這一來哦$redis->ZSCORE('t:$tid:liked', $uid);//取消贊這樣來$redis->ZREM('t:$tid:liked', $uid);//批量取消某短時間內的點贊這樣操作$redis->ZREMRANGEBYSCORE('t:$tid:liked', $start_timestamp, $end_timestamp);//諸如此類的操作, 要比HASH強很多.

恩再PS一下!!!

如果需要用到NOSQL這樣的數據庫來存儲類似微博的數據的話, 可以這樣存儲:).

php$pipe = $redis->MULTI(Redis::PIPELINE);$pipe->SET('t:$tid', json_encode($data)) //json這種格式存儲貌似有點廢物. 如果能想到更好的格式的話,不要用JSON, 因為JSON太大了.. 比如MSGPACK這個個是就比JSON要好很多 ->ZADD('t:scores', time(), $tid);$pipe->EXEC();//PIPE 這樣的操作贊爆了. 如果你的REDIS支持事務的話, PIPE就不是一個原子性的操作了//取出數據的話就很好取出了!! $tid = $reids->ZREVRANGE('t:scores', 0, 100);$pipe = $redis->MULTI(Redis::PIPELINE); foreach($tid as $key=> $value){ $pipe->GET('t:$value');}$list = $pipe->EXEC();//$list就是你的數據啦

再再PS一下, 微博評論也是類似的存儲方法. 只是需要約定$redis KEYS的名稱. 比如:c:<評論ID> 怎么和微博數據關聯起來可以這樣:

t:$tid:comments:scores (ZSET timestmap 評論ID);

這樣取數據的時候就用PIPELINE方便很多了.

最后啰嗦一句, NOSQL這種數據庫的 KEY 一定要設置好.

回答3:

保存每個uid是否有必要,還是你覺得新浪微博就是這么搞的?大多數情況,其實大家只是關注一個數字,如果這樣的話,那么用一個數字來存儲就可以了{tid->count}

如果非要保存,建議還是用{tid->set(uid)}來保存

有個優化就是你可以設定一個閾值,比如超過100人點贊,就不再往里面加東西了,而僅僅加一個數字(當然這里需要你再存一個{tid->count})。因為超過1w的微博點贊,沒人回去逐個把每個點贊的人都點開的。。

標簽: 微博
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
婷婷激情久久| 国产精品久久久久久久久妇女| 人人精品人人爱| 999国产精品999久久久久久| 欧美日韩激情| 亚洲一区二区三区高清不卡| 午夜亚洲福利| 国产日韩欧美一区在线| 精品国产乱码久久久久久1区2匹| 久久婷婷一区| 中文一区一区三区免费在线观 | 九九久久电影| 日韩精品水蜜桃| 日韩视频一区| 亚洲人www| 欧美黄色一区二区| 国产精品a级| 日韩精品影视| 国产精品99精品一区二区三区∴ | 午夜影院一区| 日本精品不卡| 亚洲青青久久| 国产v日韩v欧美v| 激情综合自拍| 国产美女视频一区二区| 中文字幕系列一区| 婷婷成人av| 成人日韩av| 国产九九精品| 亚洲色诱最新| 神马久久午夜| 免费观看在线综合| 日本а中文在线天堂| 亚洲精品精选| 欧美在线观看视频一区| 国产精品草草| 亚洲激精日韩激精欧美精品| 欧美成人a交片免费看| 亚洲一级大片| 欧美激情另类| 国产毛片精品| 亚洲欧美日本日韩| 婷婷综合六月| 国产一区二区视频在线看| 美女精品在线| 欧美特黄一级| 99riav1国产精品视频| 免费在线小视频| 久久精品九色| 中文字幕av一区二区三区人| 欧美天堂亚洲电影院在线观看| 国产精品99精品一区二区三区∴| 蜜臀精品久久久久久蜜臀| 尤物在线精品| 先锋亚洲精品| 欧美精品一二| 日韩啪啪电影网| 精品国产aⅴ| 国产精品亲子伦av一区二区三区| 日韩国产一二三区| 日韩福利视频导航| 日本国产亚洲| 国产精品18| 国产aa精品| 日韩激情网站| 亚洲免费毛片| 亚洲精品第一| 69堂免费精品视频在线播放| 久久精品av麻豆的观看方式| 国产精品久久免费视频| 麻豆视频一区二区| 九九99久久精品在免费线bt| 国产精品综合色区在线观看| 日韩av片子| 91精品xxx在线观看| 国产精品99免费看| 国产亚洲亚洲| 四虎精品永久免费| 国产精品一区二区三区av麻| 国产一区二区三区天码| 麻豆国产精品一区二区三区| 日韩大片在线播放| 中文日韩欧美| 91成人在线| 激情综合五月| 国产亚洲一级| 国产精品探花在线观看| 国产理论在线| 亚洲精品自拍| 激情久久五月| 日本aⅴ亚洲精品中文乱码| 精品一区二区男人吃奶 | 97精品国产99久久久久久免费| 精品亚洲自拍| 亚州精品视频| 91精品国产成人观看| 综合亚洲视频| 国产成人免费精品| 视频一区日韩精品| 国产一区福利| 91久久久精品国产| 国产精品a级| 蜜桃久久精品一区二区| 精品欧美日韩精品| 亚洲欧美视频| 国产精品伦理久久久久久| 午夜久久av| 日韩精品欧美激情一区二区| 国产免费播放一区二区| 蜜桃久久久久久| 天堂网av成人| 黄毛片在线观看| 欧美亚洲色图校园春色| 日本午夜大片a在线观看| 日本va欧美va精品发布| 欧美特黄一级大片| 国产一区二区三区久久| 国产福利一区二区三区在线播放| 五月天久久网站| 日韩一区二区在线免费| 国产精品永久| 日本一区二区三区视频在线看| 亚洲综合中文| 国产乱码午夜在线视频| 精品国产一区二区三区性色av| 热久久久久久久| 亚洲精品一区二区在线看| 国产成人77亚洲精品www| 日本国产亚洲| 日韩精品久久久久久久软件91| 久久免费福利| 久久av日韩| 国产中文字幕一区二区三区| 日韩电影二区| 亚洲一区免费| 久久亚洲电影| 亚洲欧美日韩国产综合精品二区| 91精品在线观看国产| 国产精品调教视频| 麻豆久久一区二区| 国产精品白浆| 国产精品久久乐| 国产日韩一区二区三区在线| 国产精品一区二区av日韩在线| 国产精品一二| 国产精品免费99久久久| 日韩精品午夜视频| 国产精品黄色| 午夜电影亚洲| 一区二区三区四区日韩| 日韩精品亚洲专区| 欧美视频二区| 久久一区二区三区喷水| 欧美亚洲国产日韩| 国产麻豆久久| 四虎精品一区二区免费| 精品一区电影| 亚洲久久视频| 天堂av在线| 亚洲一区二区三区高清不卡| 日韩高清在线一区| 久久永久免费| 亚洲深爱激情| 日本欧美不卡| 日韩中文av| 国产一区丝袜| 午夜一级在线看亚洲| 国产不卡一区| 在线观看亚洲精品福利片| 国产精品亚洲产品| 久久激情婷婷| 毛片不卡一区二区| 国产亚洲福利| 欧美精品黄色| 国产一区二区三区视频在线| 亚洲欧美不卡| 精品午夜久久| 欧美日韩va| 午夜在线播放视频欧美| 麻豆国产精品一区二区三区| 亚洲性色视频| 91大神在线观看线路一区| 亚洲精品黄色| 亚洲视频二区| 欧美特黄一级大片| 色天使综合视频| 麻豆视频久久| 国产一卡不卡| 精品丝袜久久| 福利视频一区| 麻豆精品91| 久久国产精品99国产| 久久裸体视频| 极品av在线| 狠狠久久伊人| 国产精品第一| 日韩不卡一二三区| 日韩在线一区二区| 午夜在线观看免费一区| 亚洲日本欧美|