Redis 排序集的一個簡單示例

Redis 是一個開源的鍵值對緩存和存儲(key-value cache and store)荐吵, 由于keys可以包含(contain)strings, hashes, lists, sets, sorted sets, bitmaps and hyperloglogs這么多類型的數(shù)據雕崩,所以也稱為 data structure server歌憨。

今天我們就用到了 sorted sets排序集 或者稱為有序集),也常用 zset 來指代 sorted sets杨箭。

背景

我簡單地說一下背景储藐。我們把業(yè)務數(shù)據進行分類,按照關系型數(shù)據庫要求的范式進行建表吨铸,存放到 MySQL 中。將以 hfeed 為主體的數(shù)據庫表進行數(shù)據變換祖秒,存放到 Redis 中诞吱。

讀寫分離提高性能

示意圖:


將數(shù)據變更活動和 Read 分離

MySQL 表的設計

hfeed 主表,hfcomment 表竭缝,user 表房维,house 表。

Redis 的設計

我們將組合變換后的 hfeed 數(shù)據歌馍,稱之為擴展的 hfeed握巢,簡稱為 Hfeed-X。

key score member
命名 cid_{$user_id} {$hfeed_id} {$Hfeed-X}
MySQL表對照 user表主鍵(client's id)) hfeed表主鍵 4個表數(shù)據組合轉換(json格式)
  • 新發(fā)生的 feed 在最上面展現(xiàn)松却,以 hfeed_id 做 score 可以滿足這個需求暴浦;
  • 如果一個 feed 有新回復時溅话,業(yè)務需求要求排到最前面,則可以按照 feed 更新時間來排序歌焦,將 feed 更新時間作為 score 即可飞几;

說明

mobile app 發(fā)起的數(shù)據變更活動會進入 MySQL,進而觸發(fā) Redis 的數(shù)據變更独撇。
mobile app 從 Redis 讀取擴展的 hfeed 時屑墨,沒有什么計算量,同時基于 Redis 的存取效率纷铣,其訪問體驗應當是不錯的卵史。

sorted sets

排序集的基本含義是在一個key下可以存儲多個元素值(element),每個元素有一個用于排序的 score 值搜立。每一個元素值是唯一的以躯,重復的元素值是不允許的。

如果一個元素值已經在集合中存在啄踊,那么插入這個元素時忧设,會更新這個元素的 score 值,元素則重新插入到合適的位置以保持排序颠通。

多個元素有同樣的 score址晕,也就意味著他們排序一樣,他們之間則按照字典序進行排列顿锰。

排序集是按照 score 的升序排列的谨垃。

元素(elements)在命令中也經常稱為成員(members)

命令

了解 redis 的快速方法就是安裝好 redis撵儿,在命令行中鍵入數(shù)據示例來了解各個命令以及數(shù)據集(有時需要翻墻乘客,可能用到 G 搜索了)。
新增命令:ZADD
讀取命令:ZREVRANGE淀歇,ZRANGE易核,ZRANGEBYSCORE

備注

Redis Hashes are maps between string fields and string values, so they are the perfect data type to represent objects (e.g. A User with a number of fields like name, surname, age, and so forth)

感謝 @徐永軍

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市阔加,隨后出現(xiàn)的幾起案子饵史,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胳喷,死亡現(xiàn)場離奇詭異湃番,居然都是意外死亡,警方通過查閱死者的電腦和手機吭露,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門吠撮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人讲竿,你說我怎么就攤上這事泥兰。” “怎么了题禀?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵鞋诗,是天一觀的道長。 經常有香客問我投剥,道長师脂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任江锨,我火速辦了婚禮,結果婚禮上糕篇,老公的妹妹穿的比我還像新娘啄育。我一直安慰自己,他們只是感情好拌消,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布挑豌。 她就那樣靜靜地躺著,像睡著了一般墩崩。 火紅的嫁衣襯著肌膚如雪氓英。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天鹦筹,我揣著相機與錄音铝阐,去河邊找鬼。 笑死铐拐,一個胖子當著我的面吹牛徘键,可吹牛的內容都是我干的。 我是一名探鬼主播遍蟋,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼吹害,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了虚青?” 一聲冷哼從身側響起它呀,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后纵穿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烟号,經...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年政恍,在試婚紗的時候發(fā)現(xiàn)自己被綠了汪拥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡篙耗,死狀恐怖迫筑,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情宗弯,我是刑警寧澤脯燃,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站蒙保,受9級特大地震影響辕棚,放射性物質發(fā)生泄漏。R本人自食惡果不足惜邓厕,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一逝嚎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧详恼,春花似錦补君、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至敞掘,卻和暖如春叽掘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背玖雁。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工更扁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茄菊。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓疯潭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親面殖。 傳聞我的和親對象是個殘疾皇子竖哩,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容