【99期】中高階開發面試必問的Redis,看這篇就夠了!
阿新 • • 發佈:2021-12-18
Redis 是速度非常快的非關係型(NoSQL)記憶體鍵值資料庫。
鍵的型別只能為字串,值支援五種資料型別:字串、列表、集合、散列表、有序集合。
Redis常用的資料型別
資料型別 | 可以儲存的值 | 操作 |
---|---|---|
STRING | 字串、整數或者浮點數 | 對整個字串或者字串的其中一部分執行操作 對整數和浮點數執行自增或者自減操作 |
LIST | 列表 | 從兩端壓入或者彈出元素 對單個或者多個元素 進行修剪,只保留一個範圍內的元素 |
SET | 無序集合 | 新增、獲取、移除單個元素 檢查一個元素是否存在於集合中 計算交集、並集、差集 從集合裡面隨機獲取元素 |
HASH | 包含鍵值對的無序散列表 | 新增、獲取、移除單個鍵值對 獲取所有鍵值對 檢查某個鍵是否存在 |
ZSET | 有序集合 | 新增、獲取、刪除元素 根據分值範圍或者成員來獲取元素 計算一個鍵的排名 |
Redis的使用場景
計數器
可以對 String 進行自增自減運算,從而實現計數器功能。
Redis 這種記憶體型資料庫的讀寫效能非常高,很適合儲存頻繁讀寫的計數量。
快取
將熱點資料放到記憶體中,設定記憶體的最大使用量以及淘汰策略來保證快取的命中率。
訊息佇列
List 是一個雙向連結串列,可以通過 lpush 和 rpop 寫入和讀取訊息
不過最好使用 Kafka、RabbitMQ 等訊息中介軟體。
會話快取
可以使用 Redis 來統一儲存多臺應用伺服器的會話資訊。
當應用伺服器不再儲存使用者的會話資訊,也就不再具有狀態,一個使用者可以請求任意一個應用伺服器,從而更容易實現高可用性以及可伸縮性。
分散式鎖實現
在分散式場景下,無法使用單機環境下的鎖來對多個節點上的程序進行同步。
可以使用 Redis 自帶的 SETNX 命令實現分散式鎖,除此之外,還可以使用官方提供的 RedLock 分散式鎖實現。
其他
Set 可以實現交集、並集等操作,從而實現共同好友等功能。
ZSet 可以實現有序性操作,從而實現排行榜等功能。
Redis與Memcached的區別