Redis 可以用來做資料庫嗎

2021-08-19 10:21:54 字數 879 閱讀 3973

很久以前的問題了,redis 又發展了兩三年,資料結構更豐富了,使用場景增多,redis 3.0支援集群(cluster)模式。 

是否可以用來作為資料庫,還是看業務,架構是技術對業務妥協的結果!  

非核心業務,比如運營推廣,資料聚合統計這種允許資料少量丟失的業務可以全用redis,擴充套件方便,效率高,業務量也不大。特別是運營推廣這種時效性很強的業務,在推廣結束後資料接沒用了,redis記憶體壓力也不會很大。  

按照發展階段來看。 產品初期,業務需求多變,資料量很小,資料結構朝令夕改,這時候如果用mysql很有可能會在改資料庫結構上疲於奔命,如果用redis,由於沒有scheme約束,資料結構的變更相對容易,比起mysql能輕鬆不少。 

產品中期,業務需求逐漸穩定,可以將核心資料導到mysql中落地,其餘資料仍然放在redis中。 

產品後期,業務需求基本穩定,資料應該盡量都落地到mysql,redis做快取記憶體,或者先寫到redis,再非同步刷到mysql。 

按照對資料的需求來看 mysql能支援對各個欄位的查詢,redis的查詢僅限於對key的簡單匹配,如果要對value進行複雜查詢,不適合用redis。redis新增了計數器、bitmaps以及地理位置索引的支援,特別是地理位置索引,可以方便的做附近搜尋,有需求的話可以考慮。

redis是目前公認的速度最快的基於記憶體的鍵值對資料庫,但redis的缺點也非常明顯,僅提供最基本的hash set, list, sorted set等基於資料型別,不分表,沒有schema,沒有索引,沒有外來鍵,缺少int/date等基本資料型別,多條件查詢需要通過集合內聯(sinter,zinterstore)和連線間接實現,操作不便,開發效率低,可維護性不佳;因此一般不將其視為完整的資料庫單獨使用,很多**將redis作為快取記憶體和session狀態儲存層,然後再與其他資料庫搭配使用。

redis可以用來做什麼?(一)

redis可以用來做什麼?以部落格帖子為例大概說說,當然redis的其他功能還有很多,後續在做介紹。redis 是網際網路技術領域使用最為廣泛的儲存中介軟體,它是 remotedictionaryservice 的首字母縮寫,也就是 遠端字典服務 記錄使用者的帖子 id 列表 排序 便於快速顯示使用...

可以用來做批量掃瞄的類

這幾天幫同事解決乙個連線掃瞄器的問題,查閱了一下wia的資料,寫了乙個類,比較簡單,共享出來,方便大家來寫掃瞄的元件。這個類需要windows的wia元件支援,具體內容我都放到附加的 中了。using system using system.collections.generic using sys...

鉤子是啥?以及用來說啥,是不是可以用來做即時通訊?

鉤子 hook 是windows訊息處理機制的乙個平台,應用程式可以在上面設定子程以監視指定視窗的某種訊息,而且所監視的視窗可以是其他程序所建立的。當訊息到達後,在目標視窗處理函式之前處理它。鉤子機制允許應用程式截獲處理window訊息或特定事件。鉤子實際上是乙個處理訊息的程式段,通過系統呼叫,把它...