redis 關系數據庫怎么轉換 和_redis數據庫設計(轉)

閱讀目錄

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/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539327.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539327.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539327.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Hadoop Archives

介紹 時間: Hadoop Archives (HAR files)是在0.18.0版本中引入的。 作用: 將hdfs里的小文件打包成一個文件,相當于windows的zip,rar。Linux的 tar等壓縮文件。把多個文件打包一個文件。 意義: 它的出現就是為了緩…

js 判斷日期時間差

2019獨角獸企業重金招聘Python工程師標準>>> alert(GetDateDiff("2018-02-27 19:20:22","2018-02-27 09:20:22","hour"));function GetDateDiff(startTime, endTime, diffType) {//將xxxx-xx-xx的時間格式,轉換為 xxxx/xx…

python 圖形_Python圖形數據

CSGraph代表 壓縮稀疏圖 ,它著重于基于稀疏矩陣表示的快速圖算法。 圖表表示 首先,讓我們了解一個稀疏圖是什么以及它在圖表示中的作用。 什么是稀疏圖? 圖形只是節點的集合,它們之間有鏈接。圖表幾乎可以代表任何事物 - 社交網絡…

本地運行hadoop-Failed to locate the winutils binary in the hadoop binary path

轉自:http://www.cnblogs.com/zq-inlook/p/4386216.html 之前在mac上調試hadoop程序(mac之前配置過hadoop環境)一直都是正常的。因為工作需要,需要在windows上先調試該程序,然后再轉到linux下。程序運行的過程中&#…

dubbo 支持服務降級嗎_dubbo面試題!會這些,說明你真正看懂了dubbo源碼

整理了一些dubbo可能會被面試的面試題,感覺非常不錯。如果你基本能回答說明你看懂了dubbo源碼,對dubbo了解的足夠全面。你可以嘗試看能不能回答下。我們一起看下有哪些問題吧?dubbo中"讀接口"和"寫接口"有什么區別?談談…

不滿足于汽車制造,豐田展示仿鋼鐵俠機器支撐腿架

而汽車制造商開發機器人也不是豐田一家的專利,此前現代也推出過類似的支撐機器人腿架 大多數人對于豐田的印象都停留在汽車制造上,不過他們卻不僅僅滿足于汽車事業的發展,最近,豐田正在研發一款機器人支撐腿架,來幫助…

js html異步加載的屬性,異步加載JS的五種方式

方案一:點評:HTML5中新增的屬性,Chrome、FF、IE9&IE9均支持(IE6~8不支持)。此外,這種方法不能保證腳本按順序執行。方案二:點評:兼容所有瀏覽器。此外,這種方法可以確保所有設置defer屬性的…

python中各操作符的優先級_Python3練習題系列(06)——各種符號總結

Python3中的各種符號總結 1關鍵字 import keyword print(keyword.kwlist, end\t) [False, None, True, and, as, assert, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, r…

hdfs java讀寫hdfs demo

windows環境配置: 1.下載winutils的windows版本 GitHub上,有人提供了winutils的windows的版本, 項目地址是:https://github.com/srccodes/hadoop-common-2.2.0-bin,直接下載此項目的zip包,下載后是文件名是hadoop-comm…

cesium 經緯度繪制點_NCL繪制2016年1號臺風(Nepartak)

begin ncol 6 ;臺風參數 nrow 31 ;時次總數 nbin 6 ;已知該該氣旋共經歷了6個等級的演變 ;讀入臺風資料 data asciiread("NEPARTAK.txt",(/nrow,ncol/),"integer") ;/31,6/ 31行6列,integer整數類型 ;;數據讀取函數總結&…

VR究竟多奇幻?eSmart邀你共赴一場VR奇幻之旅!

今年夏天,快來參加首屆eSmart展會,來一場VR游戲的奇妙之旅,見識最好玩、最有趣的VR游戲! 正如十幾年前互聯網的興起開創了全新時代一樣,VR產業在近兩年也勢不可擋。隨著一重行業巨頭的進入,2016年&#xf…

HTML5新的解析順序,HTML5新表單新功能解析

HTML5新增了很多屬性功能。但是有兼容性問題,因為這些表單功能新增的。我這里做了一個簡單的練習,方便參考。如果完全兼容的話,那我們寫表單的時候就省了很多代碼以及各種判斷。HTML5表單新功能解析#da{width:350px;height:600px;margin:0 au…

python子類繼承父類屬性實例_Python實現子類調用父類的初始化實例

前言 python中進行面向對象編程,當在子類的實例中調用父類的屬性時,由于子類的__init__方法重寫了父類的__init__方法,如果在子類中這些屬性未經過初始化,使用時就會出錯。 例如以下的代碼: class A(object): def __init__(self):…

hadoop 回收站Trash

介紹: Hadoop回收站trash,默認是關閉的。 和Linux系統的回收站設計一樣,HDFS會為每一個用戶創建一個回收站目錄:/user/用戶名/.Trash/,每一個被用戶通過Shell刪除的文件/目錄,在系統回收站中都一個周期&…

opencv畫框返回坐標 python_[python]依靠pynput和pyautogui替換ahk

autohotkey當然是不錯的工具,但是這個東西的社群一直發展的不行。從開始學習python以后,我就不時會希望能找到別的工具替代ahk。Python的眾多包里面確實是有對應的工具的:模擬鼠標和鍵盤的操作可以用pyautogui,而捕捉熱鍵則可以使…

Hadoop SequenceFile

apache原文:http://hadoop.apache.org/docs/r1.0.4/api/org/apache/hadoop/io/SequenceFile.html 概念: SequenceFile是一個由二進制序列化過的key/value的字節流組成的文本存儲文件,它可以在map/reduce過程中的input/output 的format時被使…

機器學習算法平臺alink_Alink漫談(十二) :在線學習算法FTRL 之 整體設計

Alink漫談(十二) :在線學習算法FTRL 之 整體設計[Toc]0x00 摘要Alink 是阿里巴巴基于實時計算引擎 Flink 研發的新一代機器學習算法平臺,是業界首個同時支持批式算法、流式算法的機器學習平臺。本文和下文將介紹在線學習算法FTRL在Alink中是如何實現的&a…

Linux Shell獲取系統資源使用百分比(CentOS)

CPU使用率: top -b -n 1 | head -n 4 | grep "^Cpu(s)" | awk {print $2} | cut -d u -f 1 內存使用率: free -m | grep ^- | awk {print $3/($3$4)*100"%"} IO使用率(FS_PATH的值改成df -h出來的那些Filesystem名稱即可…

html城市繪制,HTML5/Canvas二分法構建城市版圖

JavaScript語言:JaveScriptBabelCoffeeScript確定var ctx fullscreenCanvas().ctx;var canvas ctx.canvas;function Rect(pos, width, height) {this.pos pos;this.width width;this.height height;}Rect.prototype.update Function.prototype;Rect.prototype…

探測器反向偏壓_近紅外和可見光雙模有機光電探測器

更多精彩,點擊上方藍字關注我們!中英標題近紅外和可見光雙模有機光電探測器Near-infrared and Visible Light Dual-mode Organic Photodetectors圖文導讀研究報告了一種具有三層可見光吸收體/光學間隔層/近紅外(NIR)光吸收體結構的雙模有機光電探測器(OP…