Redis 知識點整理,你面試需要知道的

什麼是 Redis ?

Redis 是用 C 語言開發的一個開源的高性能鍵值對(key-value)數據庫。

  • Redis 運行在內存中但是可以持久化到磁盤,所以它支持高速讀寫,及數據持久化。
  • Redis 支持複雜的數據結構儲存。
  • Redis 支持數據備份,即 Master - Slave 模式的數據備份,所以可以運用主從複製實現讀寫分離。

Redis支持的 5 種數據類型

String 字符串,Hash 哈希 ,List 列表,Set 集合,zset 有序集合(sorted set)。

String 字符串

String 類型是 Redis 最基本的數據類型,String 類型的值最大能存儲 512M

# set 設置值
set key value

# get 取值
get value

Hash 哈希

Hash 是一個鍵值(key - value)對集合

Hash 是一個 String 類型的 Field 和 Value 的映射表,特別適合用於存儲對象

# 如果key 被用過,需刪除
del key

# hash 設置值
hmset key key1 value1 key2 value2

# hash 取值
hget key key1/key2

List 列表

List 是簡單的字符串列表,按照插入順序排序。添加一個元素到列表的頭部(左邊)或者尾部(右邊)。

# 如果有其他類型key,需刪除,否則報錯
del key

# list 設置值 
# lpush頭部添加,可以多次value設置
lpush key value1

# list 取值
# 0 10 是取值區間
lrange key 0 10

Set 集合

SetString 類型的無序集合。
集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是 O(1)

# 如果有其他類型key,需刪除,否則報錯
del key

# set 設置值
# 可以多次value設置
sadd key value1

# set 取值
smembers key 

Zset 有序集合

ZsetSet 一樣也是 String 類型元素的集合,且不允許重複的成員。

不同的是每個元素都會關聯一個 Double 類型的分數。Redis正是通過分數來爲集合中的成員進行從小到大的排序

Zset 的成員是唯一的,但分數(score)卻可以重複。

# 如果有其他類型key,需刪除,否則報錯
del key

# zset 設置值
# 可以多次value設置; 0 是分數(次數),可重複
zadd key 0 value1

# zset 取值
# 通過分數排序去取值,0 10 是區間
zrangebyscore key 0 10

指令練習

Try Redis

Redis 持久化方式有哪些?

Redis 提供了兩種持久化方式:RDB (Redis DataBase)(默認)和 AOF (Append Only File)。

PS:持久化就是把內存的數據寫到磁盤中去,防止服務宕機了內存數據丟失。

RDB

指定的時間間隔內,執行指定次數的寫操作,則會將內存中的數據寫入到磁盤中。即在指定目錄下生成一個 dump.rdb 文件。redis 重啓會通過加載 dump.rdb 文件恢復數據。

Redis.conf 配置文件中 RDB 持久化配置信息(默認配置)

# RDB 持久化,快照保存頻率
# 900秒內,如果超過1個key被修改,則發起快照保存
# 300秒內,如果超過10個key被修改,則發起快照保存
# 60秒內,如果1萬個key被修改,則發起快照保存
save 900 1
save 300 10
save 60 10000

# 啓用rdb文件壓縮手段,默認爲yes。
rdbcompression yes

AOF

Redis 默認不開啓,是以文件形式存儲。

它的出現是爲了彌補 RDB 的不足(數據的不一致性),所以它採用日誌的形式來記錄每個寫操作,並追加到文件中

Redis 重啓時,會根據日誌文件的內容,將寫指令從前到後執行一次以完成數據的恢復工作。

PS: 在正式環境中,一般兩種備份方式都會開啓,其中 AOF 在只需要在主庫,以及個別 2 - 3 臺的從庫上開啓即可,當數據丟失時,可以人爲通過 AOF 日誌進行數據恢復。

Redis.conf 配置文件中 AOF 持久化配置信息

# 開啓 AOF 持久化
appendonly yes

Redis架構模式

  • 單機模式
  • 主從模式
  • 哨兵
  • 集羣模式
    1. Sentinel 高可用集羣,主從複製,故障轉移
    2. Cluster 高可用集羣,配置簡單,支持故障轉移,動態增減節點,水平橫向擴展(推薦)

特點參考:
Redis 架構模式

運用場景

  1. 會話緩存
    在會話中保存用戶等信息,好處可以提供持久化。
  2. 排行榜相關問題
    關係型數據庫在排行榜方面查詢速度普遍偏慢,利用 Redis 這個非關係數據庫 SortedSet 進行熱點數據的排序很快。
  3. 分佈式鎖
    Redis 一般做緩存數據庫,可以加快訪問數據的速度,但也可以在分佈式應用中用來實現分佈式鎖。效果相當於Zookeeper,但是大多數的過程需要手動操作。

參考

Redis 數據類型

Redis 持久化之RDB和AOF

版權聲明:本文爲CSDN博主「outdata」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/outdata/article/details/105582327

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章