NoSQL和redis簡介以及redis的兩種持久化機制

NoSQL的概念及特點

概念:not only sql 泛指非關(guān)系型數(shù)據(jù)庫,為大數(shù)據(jù)而生

分類(按存儲形式):

1.鍵值對存儲型數(shù)據(jù)庫

采用key - value 的形式存儲,簡單,易部署

例:redis,Cabinet/Tyrant,Oracle BDB

2.列存儲數(shù)據(jù)庫

以列相關(guān)存儲架構(gòu)進行數(shù)據(jù)存儲的數(shù)據(jù)庫,主要適合于批量數(shù)據(jù)處理和即時查詢。

例:HBase,Riak

3.文檔型數(shù)據(jù)庫

該類型的數(shù)據(jù)模型是版本化的文檔,半結(jié)構(gòu)化的文檔以特定的格式存儲,比如 JSON。文檔型數(shù)據(jù)庫可 以看作是鍵值數(shù)據(jù)庫的升級版,允許之間嵌套鍵值。而且文檔型數(shù)據(jù)庫比鍵值數(shù)據(jù)庫的查詢效率更高。

例:MongoDB

4.圖形(Graph)數(shù)據(jù)庫

使用靈活的圖形模型,并且能夠擴展到多個服務(wù)器上。NoSQL數(shù)據(jù)庫沒有標(biāo)準(zhǔn)的查詢語言(SQL),因此進行數(shù)據(jù)庫查詢需要制定數(shù)據(jù)模型。

例:Neo4J

特點:

redis

簡介

redis是一個key-value存儲系統(tǒng)。支持的數(shù)據(jù)類型有string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。redis基于內(nèi)存存儲,提供持久化操作

redis的特點和優(yōu)勢:

1 基于內(nèi)存存儲數(shù)據(jù), 處理數(shù)據(jù)的速度快。

2 基于key 和 value存儲數(shù)據(jù)。

3 有自己的key過期策略。

4 數(shù)據(jù)類型豐富。

5 redis有自己特有的持久化機制。

6 支持訂閱/發(fā)布

為什么單線程的redis速度如此之快?

避免線程切換浪費時間

redis單個命令的響應(yīng)時間為400納秒

redis由c語言開發(fā),貼合硬件

使用redis時存在的隱患

如果一個命令執(zhí)行的時間過長,會導(dǎo)致命令隊列阻塞, 引發(fā)redis某一時間段無法對外正常提供服務(wù)。

比如: 線上的環(huán)境, 避免使用 **keys *** 遍歷key

redis的持久化

RDB持久化機制

當(dāng)redis出發(fā)了RDB持久化機制的時候,處在進程中的數(shù)據(jù)會以快照文件的方式持久化到磁盤中,若redis服務(wù)異常關(guān)閉或重啟時,在redis服務(wù)啟動的時候,根據(jù)持久化文件進行數(shù)據(jù)恢復(fù)

RDB觸發(fā)時機

① 手動觸發(fā)

使用 save 或 bgsave的命令,命令執(zhí)行時,主進程會調(diào)用操作系統(tǒng)fork一個子進程,此時,主進程繼續(xù)執(zhí)行命令隊列的其他命令,子進程執(zhí)行持久化操作,子進程執(zhí)行完畢之后,會通知主進程

② 自動觸發(fā)

第一種自動觸發(fā)方式:當(dāng)redis停止服務(wù)或重啟服務(wù)時,自動觸發(fā)RDB持久化

第二種自動觸發(fā)方式:根據(jù)配置文件中的配置自動觸發(fā)

RDB持久化的優(yōu)缺點

優(yōu)點

① RDB持久化文件經(jīng)過了壓縮算法的處理, 快照文件的大小 比 實際內(nèi)存中的數(shù)據(jù)量要小。

② 采用RDB持久化文件恢復(fù)數(shù)據(jù), 速度較快。

③ 我們可以將一個 .rdb快照文件,直接傳遞給另一個redis服務(wù),完成數(shù)據(jù)的備份。

4.2 缺點

① 由于不同版本的redis生成的.rdb文件格式的差異, 會導(dǎo)致不同版本之間的rdb文件不通用。

② 無法實現(xiàn)秒級備份

AOF持久化機制

AOF持久化是通過生成命令日志文件的方式,完成持久化操作的。當(dāng)服務(wù)重啟的時候redis會將命令日志文件中保存的命令,再執(zhí)行一次,完成數(shù)據(jù)的恢復(fù)。(AOF機制默認(rèn)是關(guān)閉的)

AOF觸發(fā)時機

① 當(dāng)redis開啟AOF持久化機制,redis服務(wù)關(guān)閉或重啟時會自動觸發(fā)AOF持久化機制

② 根據(jù)配置文件觸發(fā)

AOF重寫

AOF重寫的目的: 對appendonly.aof文件進行優(yōu)化。優(yōu)化后的AOF文件體積會變小。

為什么AOF重寫后文件會變???

① aof文件中會存在無效的命令

② 對于過期數(shù)據(jù)的命令做優(yōu)化

③ 對命令的組合進行優(yōu)化

觸發(fā)AOF重寫的時機:

① 手動觸發(fā) :命令 bgrewriteaof

② 自動觸發(fā) :

 在此我向大家推薦一個架構(gòu)學(xué)習(xí)交流群。交流學(xué)習(xí)群號:938837867 暗號:555 里面會分享一些資深架構(gòu)師錄制的視頻錄像:有Spring,MyBatis,Netty源碼分析,高并發(fā)、高性能、分布式、微服務(wù)架構(gòu)的原理,JVM性能優(yōu)化、分布式架構(gòu)等這些成為架構(gòu)師必備

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 從這篇文章開始,將依次介紹Redis高可用相關(guān)的知識——持久化、復(fù)制(及讀寫分離)、哨兵、以及集群。 本文將先說明...
    不變甄心閱讀 737評論 0 4
  • 一、Redis高可用概述 在介紹Redis高可用之前,先說明一下在Redis的語境中高可用的含義。 我們知道,在w...
    Java架構(gòu)_師閱讀 475評論 0 2
  • 前言 在上一篇文章中,介紹了Redis內(nèi)存模型,從這篇文章開始,將依次介紹Redis高可用相關(guān)的知識——持久化、復(fù)...
    Java架構(gòu)閱讀 2,503評論 3 21
  • 一、Redis高可用概述 在介紹Redis高可用之前,先說明一下在Redis的語境中高可用的含義。 我們知道,在w...
    空語閱讀 1,679評論 0 2
  • 傳統(tǒng)教育轉(zhuǎn)型進入互聯(lián)網(wǎng)教育,一種是運用互聯(lián)網(wǎng)思維把線下資源鏈搬進到在線教育平臺中,實現(xiàn)在線觀看視頻的教學(xué)方式;另一...
    笨拙的人閱讀 1,213評論 0 51

友情鏈接更多精彩內(nèi)容