1.Redis的數(shù)據(jù)類型
a.String
string類型是Redis最基本的數(shù)據(jù)類型,一個redis中字符串value最多可以是512M
b.Hash
Redis hash是一個string類型的field和value的映射表,hash特別適合用于存儲對象。
c.List
Redis 列表是簡單的字符串列表,按照插入順序排序,它的底層實際是個鏈表
d.Set
Redis的Set是string類型的無序集合。它是通過HashTable實現(xiàn)實現(xiàn)的
e.ZSet
Redis zset 和 set 一樣也是string類型元素的集合,且不允許重復的成員。不同的是每個元素都會關聯(lián)一個double類型的分數(shù)。
redis正是通過分數(shù)來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(shù)(score)卻可以重復。
各類型常用操作:Http://redisdoc.com/
2.Redis的持久化
a.RDB(Redis DateBase)
Redis會單獨創(chuàng)建(fork)一個子進程來進行持久化,會先將數(shù)據(jù)寫入到一個臨時文件中,待持久化過程都結束了,再用個
臨時文件替換上次持久化好的文件。整個過程中,主進程是不進行任何IO操作的,這就確保了極高的性能如果需要進行規(guī)
模數(shù)據(jù)的恢復,且對于數(shù)據(jù)恢復的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺點是最后一次久
化后的數(shù)據(jù)可能丟失。Rdb 保存的是dump.rdb文件
觸發(fā)RDB快照:
Save:save時只管保存,其它不管,全部阻塞
BGSAVE:Redis會在后臺異步進行快照操作,快照同時還可以響應客戶端請求??梢酝ㄟ^lastsave命令獲取最后一次
成功執(zhí)行快照的時間
恢復RDB快照:
將備份文件 (dump.rdb) 移動到 redis 安裝目錄并啟動服務即可
優(yōu)勢:
1.適合大規(guī)模的數(shù)據(jù)恢復
2.對數(shù)據(jù)完整性和一致性要求不高
劣勢:
1.在一定間隔時間做一次備份,所以如果redis意外down掉的話,就會丟失最后一次快照后的所有修改
2.Fork的時候,內(nèi)存中的數(shù)據(jù)被克隆了一份,大致2倍的膨脹性需要考慮

image.png
b.AOF(Append Only File)
以日志的形式來記錄每個寫操作,將Redis執(zhí)行過的所有寫指令記錄下來(讀操作不記錄),只許追加文件但不可以改寫文
件,redis啟動之初會讀取該文件重新構建數(shù)據(jù),換言之,redis重啟的話就根據(jù)日志文件的內(nèi)容將寫指令從前到后執(zhí)行一次
以完成數(shù)據(jù)的恢復工作。Aof保存的是appendonly.aof文件。
啟動恢復:

Rewirte:
AOF采用文件追加方式,文件會越來越大為避免出現(xiàn)此種情況,新增了重寫機制,當AOF文件的大小超過所設定的閾值
時,Redis就會啟動AOF文件的內(nèi)容壓縮,只保留可以恢復數(shù)據(jù)的最小指令集.可以使用命令bgrewriteaof
重寫原理:AOF文件持續(xù)增長而過大時,會fork出一條新進程來將文件重寫(也是先寫臨時文件最后再rename),遍歷新
進程的內(nèi)存中數(shù)據(jù),每條記錄有一條的Set語句。重寫aof文件的操作,并沒有讀取舊的aof文件,而是將整
個內(nèi)存中的數(shù)據(jù)庫內(nèi)容用命令的方式重寫了一個新的aof文件,這點和快照有點類似。
優(yōu)勢/劣勢:


image.png
3.Redis事務
可以一次執(zhí)行多個命令,本質(zhì)是一組命令的集合。一個事務中的所有命令都會序列化,按順序地串行化執(zhí)行而不會被其它命令
插入,不許加塞
常用操作:

步驟:

特性:
1.單獨的隔離操作:事務中的所有命令都會序列化、按順序地執(zhí)行。事務在執(zhí)行的過程中,不會被其他客戶端發(fā)送來的命
令請求所打斷。
2.沒有隔離級別的概念:隊列中的命令沒有提交之前都不會實際的被執(zhí)行,因為事務提交前任何指令都不會被實際執(zhí)行,
也就不存在”事務內(nèi)的查詢要看到事務里的更新,在事務外查詢不能看到”這個讓人萬分頭痛的問題
3.不保證原子性:redis同一個事務中如果有一條命令執(zhí)行失敗,其后的命令仍然會被執(zhí)行,沒有回滾
4.Redis發(fā)布訂閱
進程間的一種消息通信模式:發(fā)送者(pub)發(fā)送消息,訂閱者(sub)接收消息。
常見命令:

image.png
操作:
先訂閱后發(fā)布后才能收到消息,
1 可以一次性訂閱多個,SUBSCRIBE c1 c2 c3
2 消息發(fā)布,PUBLISH c2 hello-redis
3 訂閱多個,通配符*, PSUBSCRIBE new*
4 收取消息, PUBLISH new1 redis2015
5.Redis主從復制
主機數(shù)據(jù)更新后根據(jù)配置和策略,自動同步到備機的master/slaver機制,Master以寫為主,Slave以讀為主
復制原理:

哨兵模式:
反客為主的自動版,能夠后臺監(jiān)控主機是否故障,如果故障了根據(jù)投票數(shù)自動將從庫轉(zhuǎn)換為主庫
缺陷:
由于所有的寫操作都是先在Master上操作,然后同步更新到Slave上,所以從Master同步到Slave機器有一定的延遲,當系統(tǒng)
很繁忙的時候,延遲問題會更加嚴重,Slave機器數(shù)量的增加也會使這個問題更加嚴重。