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)師必備