redis資料庫設計

來源:互聯網
上載者:User

標籤:

原文:http://segmentfault.com/q/1010000000316112

redis是什麼

redis就是一個儲存key-value索引值對的倉庫,如何使用redis在於如何理解你需要設計的系統的E-R的模型,然後合理的規劃redis的資料庫結構

情境

我舉一個簡單的訊息系統的例子,業務需求:伺服器端發送訊息給使用者
E-R模型:
1. 使用者(uid,nickname,phone,mood)
2. 訊息(mid,title,content,ts)

使用者和訊息之間是n:n的關係,一個訊息可以發給多個使用者,每個使用者可以擁有多個訊息

redis資料庫設計

redis資料庫設計的關鍵在於key的設計,我一般採用固定首碼+唯一尾碼的方式,例如:
1. 訊息實體是兩層結構,考慮用redis的hash資料結構進行儲存(ps:用基本的string也是沒問題的),key為msg_[$mid],mid類似於mysql表的主key,在當前redis資料庫要保證全域唯一,可使用redis的incr原子操作實現,value可以是array(‘title‘ => ‘標題‘, ‘content‘ => ‘內容‘, ‘ts‘ => ‘發布時間戳記‘).這樣,每次伺服器端產生訊息,構造這樣一個key-value的索引值對即可表示訊息本身的內容
2. 使用者實體,因為使用者的資訊需要更穩定的持久化儲存,所以建議直接儲存在mysql裡,不需要進行遷移到redis中
3. 使用者-訊息關係,可以考慮redis的sets資料結構。key為unread_mids_[$uid]和read_mids_[$uid],value為mid的集合。每次訊息發送給指定的使用者時,只需要將訊息放到對應的集合裡即可

這樣就能表示出訊息系統對應的E-R模型了

總結

redis資料庫如何使用,關鍵自於你如何設計和理解你要做系統的E-R模型,搞清楚實體之間的關係,在redis裡設計相應的key-value索引值對即可。至於那幾種資料結構,對你設計redis資料庫來說作用不大,只是起到更方便的效果,用memcache一樣可以做到這些。
針對redis的提供的幾種資料結構,我建議別浮在表面只是會調個api,一點技術含量都沒有,建議去看一下源碼實現,推薦連結:http://redisbook.com/

redis資料庫設計(轉)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.