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 集合
Set
是 String
類型的無序集合。
集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是 O(1)
。
# 如果有其他類型key,需刪除,否則報錯
del key
# set 設置值
# 可以多次value設置
sadd key value1
# set 取值
smembers key
Zset 有序集合
Zset
和 Set
一樣也是 String
類型元素的集合,且不允許重複
的成員。
不同的是每個元素都會關聯一個 Double 類型的分數。Redis正是通過分數來爲集合中的成員進行從小到大的排序。
Zset
的成員是唯一的,但分數(score)卻可以重複。
# 如果有其他類型key,需刪除,否則報錯
del key
# zset 設置值
# 可以多次value設置; 0 是分數(次數),可重複
zadd key 0 value1
# zset 取值
# 通過分數排序去取值,0 10 是區間
zrangebyscore key 0 10
指令練習
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架構模式
- 單機模式
- 主從模式
- 哨兵
- 集羣模式
- Sentinel 高可用集羣,主從複製,故障轉移
- Cluster 高可用集羣,配置簡單,支持故障轉移,動態增減節點,水平橫向擴展(推薦)
特點參考:
Redis 架構模式
運用場景
- 會話緩存
在會話中保存用戶等信息,好處可以提供持久化。 - 排行榜相關問題
關係型數據庫在排行榜方面查詢速度普遍偏慢,利用 Redis 這個非關係數據庫 SortedSet 進行熱點數據的排序很快。 - 分佈式鎖
Redis 一般做緩存數據庫,可以加快訪問數據的速度,但也可以在分佈式應用中用來實現分佈式鎖。效果相當於Zookeeper,但是大多數的過程需要手動操作。
參考
版權聲明:本文爲CSDN博主「outdata」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/outdata/article/details/105582327