1.0 NoSQL 簡介
- nosql是not only SQL的縮寫
- memcache Redis MongoDB被稱爲nosql三劍客
- 所以NoSQL數據庫的最大優勢體現爲:高效能、高可用性和可伸縮性。
2.0 Redis簡介
2.1 概念
- 支援 strings, hashes ,lists ,sets ,sorted sets
2.2 官方地址
2.3 應用場景
- 快取
- 數據臨時儲存位置
- 分佈式環境下解決Session不一致問題時的Session庫
- 流式數據去重(數據放在set裏面來達到去重)
3.0 Redis安裝
-
上傳並解壓
-
安裝C語言編譯環境
-
修改安裝環境
-
編譯安裝
-
啓動Redis伺服器
4.0 Redis五種常用數據結構(重點)
4.1 總體結構
4.2 String型別
4.3 List型別
- peek獲取單不刪除數據 pop獲取刪除數據
- 可以用作棧或者佇列
4.4 Set型別
- Redis的Set是String型別的無序集合。它是基於雜湊表實現的。
4.5 Hash型別
- 本身就是一個鍵值對集合。可以當做Java中的Map<String,String>對待
4.6 ZSet型別
5.0 Redis命令列操作(重點)
5.1 基本操作
5.2 Key操作
- 查詢 keys *
- 判斷存在 exists key
- TTL 檢視還可以存活多久
- expire key seconds設定過期時間
- persist key移除過期時間
5.3 String型別操作(常用的)
5.4 List型別操作
- 只能從左到右讀,有兩套角標可以混着用,但是start 要在end前面 (0 ~ -1是遍歷)
5.5 Set型別操作(常用的)
- 不允許空集合存在
- smembers key 檢視所有數據
- sismember key member 是否存在這個元素
5.6 Hash型別操作(常用的)
略
5.7 ZSet型別操作
總結:重點是String set hash三部分
如何使用Redis選擇的問題:
- 使用Redis儲存什麼?
- 型別選擇問題? 數據量小的時候用hash(rediskey(k-v)) 數據量大的時候使用string(k-v):避免數據熱點的問題(做負載均衡)
- RedisKey設計(求日活 新增什麼的有影響)
string型別的就是簡單的k-v
set就是k和v的集合
6.0 Redis持久化機制 機製(面試題)
6.1 RDB
6.1.1 機制 機製描述
- 每隔一定的時間把記憶體中的數據作爲一個快照儲存到硬碟上的檔案中。Redis預設開啓RDB機制 機製。
6.1.2 觸發時機
6.1.3 相關設定
略
6.1.4 思考
RDB機制 機製能夠保證數據的絕對安全嗎?
6.2 AOF
6.2.1 機制 機製描述
6.2.2 AOF基本設定
6.2.3 AOF重寫
6.3 持久化檔案損壞修復
-
第一步:備份要修復的appendonly.aof檔案
-
第二步:執行修復程式
bin/redis-check-aof --fix ./appendonly.aof
-
第三步:重新啓動Redis
注意:所謂修復持久化檔案僅僅是把損壞的部分去掉,而沒法把受損的數據找回。
6.4 擴充套件閱讀
6.4.1 RDB
- 適合大規模數據恢復(用的是快照)
- 會丟失最後一次快照之後的修改
6.4.2 AOF
- appendsync always可以保持數據的完整性
- 檔案體積比RDB大很多
6.4.3 RDB和AOF並存
- Redis重新啓動的時候會優先載入AOF檔案來恢復原始的數據
- 但是並不要關閉RDB
6.4.4 使用建議
- 如果Redis僅僅作爲快取可以不使用任何持久化方式
7.0 Redis事務控制(面試題)
7.1 Redis事務控制相關命令
略
7.2 命令佇列執行失敗的兩種情況
略
7.3 Watch
7.4悲觀鎖和樂觀鎖
- 悲觀鎖:只能是一個人存取,鎖定
- 樂觀鎖:可以多人存取,當發生碰撞,那麼放棄自己的操作
8.0 Redis主從複製機制 機製(面試題)
8.1 讀寫分離的好處
8.2 搭建步驟
略
8.3 主從關係
- slave掛了之後,重新啓動之後就會成爲master
- master掛了之後,slave依舊是slave,但是叢集沒有master,只能等master重新啓動
8.4 初步測試
略
8.5 哨兵模式
8.5.1 作用
8.5.2 相關概念
8.5.3 設定方式
8.5.4 啓動哨兵
9.0 發佈訂閱(瞭解)
9.1 訂閱一個頻道
9.2 在一個頻道上發佈訊息
10.0 Jedis
10.1 一個對比
10.2 Redis準備